Nach den gestrigen Buchtipps im 9. Türchen des TYPO3-Adventskalenders gibt es heute wieder etwas „Praktisches“. Die Globalisierung schreitet voran. Mehrsprachige Webseiten stehen immer häufiger auf der Tagesordnung. Um die unterschiedlichen Zeichensätze der verschiedenen Sprachen in der Datenbank speichern zu können, muss diese entsprechend eingerichtet sein. Aber auch TYPO3 muss für die Arbeit mit den verschiedensten Zeichen konfiguriert werden. Der gemeinsame Nenner für diese Problematik ist UTF-8.
Hat man eine normale TYPO3-Installation vor sich, so dürfte diese die Daten in einer „latin1“-Tabelle speichern. Um diese auf UTF-8 umstellen zu können, muss mindestens MySQL >= 4.1 zum Einsatz kommen. Bevor man sich an die Arbeit macht, sollte man vom aktuellen Stand der Webseite ein Backup machen – man kann ja nie wissen. Es bietet sich auch an, vor der Umstellung seine TYPO3-Installation aufzuräumen.
Da die meisten TYPO3-Datenbanken ein wenig größer sein dürften, werde ich den Export und späteren Import auf der Konsole durchführen. phpmyadmin dürfte bei zu großen Datenbanken meist in einen Timeout laufen – zumindest beim Importieren. Dann fängt man an, SQL-Dateien zu splitten, etc. Alles ein wenig zeitaufwändig. Daher ab auf die Konsole.
Als erstes sollte man schauen, wie die Daten in der Datenbank gespeichert werden. Wenn in der Datenbank alle Umlaute korrekt angezeigt werden, so kann man die wie folgt einen sog. SQL-Dump erstellen:
mysqldump -h DBHOST -u DBUSER -p DBPASS DBNAME --compatible=mysql40 > dump.sql
Dieser Befehl wird einen Dump der Datenbank in die Datei dump.sql speichern. DBHOST, DBUSER, DBPASS und DBNAME müssen mit den entsprechenden Angaben der Datenbank ersetzt werden. Hat man eine MySQL-Datenk >= 4.1, so enthält ein normaler Dump immer zusätzliche Angaben zum Charset der Tabellen und Felder. Erstellt man den Dump mit dem Parameter –compatible=mysql40, so sind diese Angaben nicht enthalten, da MySQL 4.0 diese Angaben noch nicht kennt.
Sollten die Umlaute in der Datenbank nicht direkt sondern als „komische Zeichen“ dargestellt werden, so sollte man den Export mit folgendem Parameter durchführen.
--default-character-set=latin1
Wenn ein korrekter SQL-Dump erstellt wurde, kann man alle Tabellen in der Datenbank löschen und die Datenbank auf UTF-8 umstellen. Besser wäre hier natürlich eine zusätzliche, neue Datenbank zu verwenden. Das Umstellen erledigt man dann am einfachsten in phpmyadmin. Den Reiter Operationen wählen, aus der Kollations-Auswahlbox „utf8_general_ci“ wählen und auf OK klicken.
Danach importiert man den zuvor exportierten SQL-Dump. Am Besten wieder über die Konsole.
mysql -h HOST -u DBUSER -p DBPASS DBNAME < dump.sql
Nach dieser Aktion ist die Datenbank nun komplett auf UTF-8 umgestellt. Die nächsten Einstellungen müssen im TYPO3 Install-Tool in der Rubrik „All Configuration“ vorgenommen werden.
Danach läuft auch das TYPO3-Backend auf UTF-8. Problem dürften jetzt noch die Templates sein. Nutzt man TemplaVoila, so hat man nach dieser Umstellung keine Ausgabe im Frontend. Aufgrund der Methode, wie TemplaVoila das Mapping in der Datenbank speichert, muss dieses nach der Umstellung auf UTF-8 neu gemacht werden. Als erstes sollte man die Template-Dateien selbst auf UTF-8 umstellen. Meist sind die HTML-Templates in ISO bzw. Latin1 und nicht in UTF-8 abgespeichert. Ist das erledigt, müssen die Templates aus o. g. Grund neu gemapped werden – die Datastructure sollte aber noch komplett vorhanden und benutzbar sein.
Enthält die Frontend-Ausgabe von TYPO3 (also der HTML-Code) noch nicht das Charset utf-8, so kann das mit folgender Zeile im TypoScript Setup eingestellt werden.
config.metaCharset = utf-8
Wer es bis hierher geschafft hat, hat nun eine auf UTF-8 laufende TYPO3-Installation vor sich.