Web Development
Oliver Thiele

Umstellung von TYPO3 und MySQL auf UTF-8

Derzeit wird bei einer frischen TYPO3-Installation immer noch "latin1" als Zeichensatz verwendet. Für mehrsprachige Webseiten werden aber unter Umständen mehrere Zeichensätze gleichzeitig verwendet. In zukünftigen TYPO3-Versionen wird utf-8 als Standard verwendet werden. Will man die Vorteile von utf-8 aber schon jetzt nutzen, dann sollte man TYPO3 schon jetzt mit UTF-8 anlegen.

In diesem Tutorial will ich die einzelnen Schritte erklären, da es immer wieder bei der Datenbankumstellung Probleme gibt.

Im groben müssen folgende Schritte gemacht werden, die ich weiter unten noch genauer erklären werde:

  1. Bei der vorhandenen TYPO3-Datenbank muss die Kollation auf
    utf8_general_ci eingestellt werden.
  2. Die Datenbanktabellen müssen komplett geleert werden.
  3. "forceCharset" und "setDBInit" müssen im Install-Tool angepasst werden
  4. Die Datenbank wird mithilfe der Compare-Funktion neu angelegt,
    die statischen Templates werden importiert und
    ein Admin-Account für das Backend wird neu angelegt.
  5. Die Umstellung sollte überprüft werden, damit nicht später größere Probleme auftauchen.

1. Umstellung der Datenbank-Kollation auf UTF-8

Die Kollation kann am einfachsten mit dem Tool phpMyAdmin geändert werden. Oft ist diese Open-Source-Software schon vom Provider vorinstalliert. Wenn dies nicht der Fall sein sollte. dann können Sie auch mit dem Extension-Manager die gleichnamige TYPO3-Erweiterung installieren.

Nach dem Aufruf von phpMyAdmin müssen sie nur den Menüpunkt Operationen aufrufen und dann bei Kollation den Eintrag "utf8_general_ci" auswählen. Für Deutschland wäre auch noch die Kollation "utf8_unicode_ci" möglich, allerdings ist diese langsamer und hat als einzigen Unterschied die Sortierung von "ß"  nach "ss" und nicht nach einfachem "s". Daher sollte man diese langsamere Variante später bei Bedarf nur für einzelne Felder umstellen.

2. Löschen der vorhandenen TYPO3-MySQL-Datenbanktabellen

Im nächsten Schritt müssen alle Datenbanktabellen (und nur die Tabellen!) gelöscht werden. Dazu muss man auf den Datenbanknamen direkt über der Tabellenübersicht an der linken Seite oben klicken. Nun sollte im rechtem Teil der Seite eine Übersicht aller Tabellen zu sehen sein. Wenn man nun nach unten scrollt, kann man zunächst "Alle auswählen" und dann "Löschen" anklicken. Nach einer Sicherheitsabfrage kann man nun alle Tabellen droppen. Die folgenden Fehlermeldungen kann man ignorieren. Da unter anderem die Tabelle be_users und be_sessions gelöscht ist, ist man natürlich direkt ausgeloggt.

3. Einstellungen im TYPO3-Install-Tool

Bevor die Tabellen neu angelegt werden, müssen die Einstellungen im Install-Tool gemacht werden.

Wichtig sind hier vor allem 2 Einträge: setDBinit & forceCharset

[setDBInit] muss den Eintrag "set names utf8;" haben. Dieser Eintrag sorgt dafür, dass die Datenbank weiß, in welchem Datensatz die Daten übermittelt werden. Oft wird dieser Eintrag vergessen und dann speichert die Datenbank intern doppelt kodiertes UFT-8.

Dieser Wert sollte bei einer bestehenden Installation nicht ohne weiteres nachgetragen werden, da sich dann 2 verschiedene Zeichensätze gleichzeitig in der DB befinden und damit ist eine saubere Konvertierung nicht mehr möglich!!!

Bei [forceCharset] muss "utf-8" eingetragen werden. Hiermit wird das Backend und Frontend umgestellt. Gleichzeitig werden also auch die TypoScript-Eigenschaften metaCharset und renderCharset richtig eingestellt.

[multiplyDBfieldSize] sollte nicht geändert werden, da diese Einstellung nur für MySQL 4.0 nötig war!

(Siehe auch http://wiki.typo3.org/index.php/UTF-8_support)

Wenn im PHP die Module iconv (php5) und mbstring aktiviert sein sollten, sollten bei [t3lib_cs_convMethod] und [t3lib_cs_utils] der Wert "iconv" eingetragen werden.

4. Neuanlegen der Datenbank

Nach Abschluss aller Einstellungen kann die Datenbank wieder mit Tabellen und Daten gefüllt werden. Am einfachsten geht dies über das TYPO3-Install-Tool. Im Menüpunkt "2: Database Analyser" klickt man zunächst auf COMPARE und bestätigt das Anlegen der Tabellen mit "Write to database". Jetzt sollte die Datenbankstruktur wieder richtig angelegt sein.

Falls nach dem Compare bestimmte Felder immer wieder angezeigt werden sollten, kann dies oft ignoriert werden (z.B. ist in der DB ein Feld mit char angelegt, TYPO3 möchte aber ein varchar anlegen).

Da jetzt die Datenbankstruktur wieder in Ordnung ist, können die Tabellen wieder mit Daten gefüllt werden. Hierzu klickt man nun auf IMPORT und markiert die Checkbox vor "Import the whole file 'CURRENT_STATIC' directly (ignores selections above)". Auch hier bestätigt man mit "Write to database".

Es fehlt nur noch ein Admin-User. Dieser muss natürlich neu angelegt werden, da wir ja vorher alle Benutzer aus der Datenbank gelöscht hatten.

5. Überprüfung der Umstellung

Eigentlich ist man nun fertig mit der Umstellung auf UTF-8. Da ein Fehler aber später schwer zu beheben ist, sollte man die Umstellung testen. Dazu kann man einfach z.B. den Admin-User mit Umlauten im Namen versehen und dann schauen, ob in phpMyAdmin diese Umlaute genauso angezeigt werden, wie sie sein sollten. Steht dann anstatt Müller dort Müller, dann ist vermutlich bei setDBinit der Fehler zu suchen.

Theoretisch könnte man sich auch per Terminal auf den Server verbinden und dann mysql direkt aufrufen - dies ist aber nicht ratsam, da man beim Terminal auch die Zeichensätze auswählen kann.

Dieses Tutorial ist nur für eine Neuinstallation und nicht für eine Umstellung einer bestehenden TYPO3 Installation gedacht. Falls Sie nach Informationen zu einer Umstellung einer bestehenden TYPO3-Installation suchen, besuchen sie einen von mir verfassten Artikel "MySQL und TYPO3 auf UTF-8".

© Copyright 2003-2017 Web Development Oliver Thiele. All rights reserved. - Diese Seite wurde am 21.04.2015 um 17:42 erstellt.
Letzte Änderung: 21.04.2015 17:50:58
TYPO3,MySQL,utf-8,UTF-8,Umstellung,Install-Tool,Backend,metaCharset,renderCharset,forceCharset

oliver-thiele.de Trustcheck Seal