Hi Björn, was spricht dagegen, die Daten aus der Datenbank in UTF8 rauszuholen und durch htmlentities() durchzujagen?
Marc Am 09.12.14 11:55, schrieb Björn Hahnefeld: > Hallo Chris, > > zunächst einmal vielen herzlichen Dank für deine schnelle und kompetente > Rückantwort. Allerdings muss ich keine DB-Konvertierung durchführen, da > TYPO3 durch Magento abgelöst wird. > > Da aber die Warenwirtschaft nicht mit allen Umlauten klar kommt, muss ich > alle Umlaute in Entities umwandeln - also nicht die Datenbank selbst. Meine > Überlegung war daher, nach genau diesen Zeichen zu suchen und diese dann in > der Datenbank direkt zu ersetzen (bevor die Felder in die Warenwirtschaft > exportiert werden). > > Nebenbei: > Es geht um die Artikel- und Produktdaten der Extension commerce. Dessen > Felder (und nur diese) brauche ich. Daher auch mein Skript, welches in einer > dieser DB-Tabellen Daten verändert ;)! > > Viele Grüße > > Björn > > -----Ursprüngliche Nachricht----- > Von: typo3-german-boun...@lists.typo3.org > [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Chris Wolff - > AERTiCKET AG > Gesendet: Dienstag, 9. Dezember 2014 11:38 > An: German TYPO3 Userlist > Betreff: Re: [TYPO3-german] Konvertierung von Umlauten und Sonderzeichen via > PHP-Skript > > Hallo Björn, > wenn deine daten wirklich utf-8 sind ist alles fein. > > Ich hab mal zwei scripte als gist auf github gestellt dich ich für die > datenbank convertierung nutze. > > Das erste fixted einfach nur die tabellen. Wo sie noc nicht utf-8 weil > (collate) > https://gist.github.com/wolffc/8a0a9cebeb980afcf388 > > das zweite exportiert die datenbank als latin1 und reimportiert sie als > utf-8 das ist nützlich falls du utf-8 daten in deine latin1 datenbank > geschrieben hast. > Mit etwas abwandelung kannst du das natürlich auch für andere encodings > nehmen. > https://gist.github.com/wolffc/108cf972be3b94be5d85 > > > gruss chris > > > > -----Ursprüngliche Nachricht----- > Von: typo3-german-boun...@lists.typo3.org > [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Björn Hahnefeld > Gesendet: Dienstag, 9. Dezember 2014 11:09 > An: typo3-german@lists.typo3.org > Betreff: [TYPO3-german] Konvertierung von Umlauten und Sonderzeichen via > PHP-Skript > > Hallo zusammen, > > > > ich habe hier eine TYPO3 4.4.13-Installation vor mir. Die Daten in den > MySQL-Tabellen sind alle eine utf8_general_ci-Kollation. Wie die Daten > tatsächlich abgespeichert werden, habe ich leider noch nicht im phpMyAdmin > heraus gefunden. > > > > Allerdings möchte ich alle Sonderzeichen und Umlaute (auch die CZ und PL wie > beispielsweise "Ć" umwandeln. Für den latin1-Zeichensatz ist das kein > Problem, denn dafür gibt es ja bereits einen PHP-Befehl (mit dem ich einige > Zeichen ausgenommen habe, damit HTML-Formatierungen nicht zerstört werden) - > nämlich get_html_translation_table. > > > > Allerdings werden mir die PL- und CZ-Sonderzeichen nicht konviertiert. Wenn > ich dann einen Blick in das SQL-Statement werfe, werden diese einfach nicht > umgewandelt. Das Skript selbst ist als UTF-8 abgespeichert. Hier einmal mein > Skript. Vielleicht hat jemand eine gute Idee, woran das liegen könnte? > > > > -- > > <?php > > > > // Errors > > error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); > > ini_set("display_errors", 1); > > > > // Einstellungen > > $list = get_html_translation_table(HTML_ENTITIES); > > unset($list['<']); > > unset($list['>']); > > unset($list['"']); > > unset($list['&']); > > $list['Ć'] = 'Ć'; // wird nicht umgewandelt und > vermutlich auch nicht als solches Zeichen gefunden. > > $list['ć'] = 'ć'; // wird nicht umgewandelt und > vermutlich auch nicht als solches Zeichen gefunden. > > $list['Ś'] = 'Ś'; // wird nicht umgewandelt und > vermutlich auch nicht als solches Zeichen gefunden. > > $list['ś'] = 'ś'; // wird nicht umgewandelt und > vermutlich auch nicht als solches Zeichen gefunden. > > > > //var_dump($list); > > > > $search = array_keys($list); > > $values = array_values($list); > > > > // Konvertierung > > $typo3_db = mysqli_connect("localhost", "typo3", "password", > "typo3"); > > if(!$typo3_db) > > { > > exit("Verbindungsfehler: " . mysqli_connect_error()); > > } > > > > //$tx_commerce_articles_entities = mysqli_query($typo3_db, > "SELECT * FROM tx_commerce_articles_entities WHERE deleted=0 AND hidden=0 > AND article_type_uid=1"); > > $tx_commerce_articles_entities = mysqli_query($typo3_db, > "SELECT * FROM tx_commerce_articles_entities WHERE deleted=0 AND hidden=0 > AND article_type_uid=1 AND uid=23534"); > > while($row = > mysqli_fetch_object($tx_commerce_articles_entities)) > > { > > $title = str_replace($search, $values, > $row->title); > > $description_extra = str_replace($search, > $values, $row->description_extra); > > $tx_nalmultitest_tests = str_replace($search, > $values, $row->tx_nalmultitest_tests); > > > > $update_sql = "UPDATE > tx_commerce_articles_entities SET title='" . $title . "', > description_extra='" . $description_extra . "', tx_nalmultitest_tests='" . > $tx_nalmultitest_tests . "' WHERE uid='" . $row->uid . "'"; > > mysqli_query($typo3_db, $update_sql); > > > > //echo mysqli_errno($typo3_db) . ": " . > mysqli_error($typo3_db) . "\n"; > > > > echo $update_sql; > > } > > > > ?> > > -- > > > > Viele Grüße > > > > Björn > > _______________________________________________ > TYPO3-german mailing list > TYPO3-german@lists.typo3.org > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german > > _______________________________________________ > TYPO3-german mailing list > TYPO3-german@lists.typo3.org > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german > > _______________________________________________ > TYPO3-german mailing list > TYPO3-german@lists.typo3.org > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german > -- Marc Willmann. TYPO3-Freelancer. http://www.marc-willmann.de Seelandstr. 14-16 D-23569 Lübeck TYPO3 Certified Integrator _______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german