[TYPO3-german] Konvertierung von Umlauten und Sonderzeichen via PHP-Skript
Marc Willmann
typo3 at marc-willmann.de
Tue Dec 9 12:34:23 CET 2014
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-bounces at lists.typo3.org
> [mailto:typo3-german-bounces at 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-bounces at lists.typo3.org
> [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Björn Hahnefeld
> Gesendet: Dienstag, 9. Dezember 2014 11:09
> An: typo3-german at 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 at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at 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
More information about the TYPO3-german
mailing list