27.06.2008: TYPO3 auf utf-8 umstellen

Das Problem ist immer das gleiche - bei der Erstellung einer mehrsprachigen TYPO3 Website achtet man nicht auf das Charset. Sobald dann eine exotische Sprache (z.B. Russisch) angelegt werden muss, erscheinen die schönen Buchstaben als Hieroglyphen.

Exakt dieses Problem hatte ich auch und so musste ich meine Datenbank von ISO (latin1) auf utf-8 umstellen.

Folgende Schritte sind für die Umwandlung notwendig:

  1. Datenbank Backup (!!!extrem wichtig!!!)
  2. Ändern der Kollation der MySQL-Tabellen z.B. mit phpMyAdmin auf "utf8_unicode_ci". Wer den Opens external link in new windowMySQLdumper verwendet, kann die Datenbank auch gleich als utf-8 sichern lassen, dann wird die Kollation der Tabellen automatisch beim dumpen verändert.
  3. Konvertieren der Datenbankdaten. Es gibt dabei mehrere Möglichkeiten:
    1. Konvertierung auf der Konsole per recode:

      recode Latin1..UTF-8 dateiname

    2. Oftmals steht aber keine Konsole zur Verfügung oder verfügt nur über kastrierte Rechte (sprich recode ist nicht verfügbar). Hier kann man die Datenbank per php Script konvertieren. Opens external link in new windowDas Script kann hier heruntergeladen werden. Das Script habe ich bei Opens external link in new windowStefan Macke gefunden und noch ein wenig modifiziert. Bei seiner Version wurden nicht alle Tabellenfelder konvertiert (z.B. text, char). Im Original stammt das Script von Opens external link in new windowdopefreshtight.de

      Die Konvertierung ist einfach. Die Datei db_convert.php öffnen und die Datenbankdaten anpassen. Zusätzlich müssen im array $tables die Tabellen definiert werden, die konvertiert werden sollen. Hifreich ist dies zum Beispiel, wenn die Scriptlaufzeit zu lang werden sollte und php dann die Konvertierung abbricht. Dann einfach die Tabellen nach und nach konvertieren.
  4. TYPO3 auf utf-8 umstellen:
    1. Im Installtool unter "All Configuration" bei "forceCharset" auf "utf-8" stellen:

      [BE][forceCharset] = utf-8

    2. Im Setup der Seite folgende Einstellungen tätigen:

        config.metaCharset = utf-8
        config.additionalHeaders = Content-Type:text/html;charset=utf-8

Cashe der TYPO3 Installation löschen und das Ergebnis im Frontend begutachten.

Nach der Konvertierung hatte ich allerdings noch massive Problemen mit meiner französischen Sprachversion (hier werden wohl die Accents nicht umgewandelt). Hier kann man dann entweder alle Seiten durchgehen und manuell die Probleme beheben oder aber direkt in der Datenbank per suchen und ersetzen die Sonderzeichen umwandeln.

Normale Contenteinträge:

UPDATE tt_content SET bodytext = replace(bodytext, '–', '-');
UPDATE tt_content SET bodytext = replace(bodytext, '”', '"');
UPDATE tt_content SET bodytext = replace(bodytext, '“', '"');
UPDATE tt_content SET bodytext = replace(bodytext, '„', '"');
UPDATE tt_content SET header = replace(header, '–', '-');
UPDATE tt_content SET header = replace(header, '”', '"');
UPDATE tt_content SET header = replace(header, '“', '"');
UPDATE tt_content SET header = replace(header, '„', '"');

tt_news:

UPDATE tt_news SET short = replace(short, '–', '-');
UPDATE tt_news SET short = replace(short, '”', '"');
UPDATE tt_news SET short = replace(short, '“', '"');
UPDATE tt_news SET short = replace(short, '„', '"');
UPDATE tt_news SET bodytext = replace(bodytext, '–', '-');
UPDATE tt_news SET bodytext = replace(bodytext, '”', '"');
UPDATE tt_news SET bodytext = replace(bodytext, '“', '"');
UPDATE tt_news SET bodytext = replace(bodytext, '„', '"');
UPDATE tt_news SET title = replace(title, '–', '-');
UPDATE tt_news SET title = replace(title, '”', '"');
UPDATE tt_news SET title = replace(title, '“', '"');
UPDATE tt_news SET title = replace(title, '„', '"');


Download TYPO3 utf-8 Converter


Kommentare

No comments