Schlagwort-Archive: Charset

Upgrade auf TYPO3 Ver. 4.7.4

Der Anlass

Gestern habe ich etwas verspätet den ersten Update auf TYPO3 Ver. 4.7.4 durchgeführt. Natürlich immer bei meiner Seite http://www.tremel-computer.de, da hier Probleme auch mal sein dürfen, ohne dass ein Kunde belästigt ist. Gleichzeitig ist dies auch die älteste Installation, mit den meisten Altlasten.

Das Problem

Natürlich ging es gleich wieder schief, die Umlaute waren weg, das leidige Problem mit den Zeichencodierungen latin1 (ISO 8859-1) und UTF-8. Viele alte, früher nötige  Workarounds in TYPO3 sind weggefallen, die neue Version kann wirklich nur noch UTF-8.

Beschreibung in:

Die Lösung klingt einfach, ist sie aber nicht, da das sowohl in der MySQL Datenbank als auch in TYPO3 auf mehreren Ebenen schiefgehen kann und in der Vergangenheit eben die Bastellösungen der Workarounds für Verwirrung sorgen. Ich habe es trotzdem mit ein paar Schweißtropfen hingekriegt. 🙂

Die Lösung

Für alle Vorgänge gilt: natürlich vorher Datenbank und Installationsverzeichnis sichern.

Typo3 Update

Wie in der Upgrade-Anleitung beschrieben:

  • link the new sources from TYPO3
  • edit your localconf file if you have settings for setDBinit or forceCharset on settings any other than utf-8
    • remove the line $TYPO3_CONF_VARS[‚BE‘][‚forceCharset‘]
    • remove the line $TYPO3_CONF_VARS[‚SYS‘][’setDBinit‘]
  • Visit the Install Tool:
    • Run through „Update wizards“ which are new in 4.6 (you can now go through them using the „Next“ button)
    • Use the „Database COMPARE“ section and apply all database schema changes

Deklarationen korrigieren

Wenn dann keine Umlaute da sind, die Typo3 Installation und  Datenbank mit dem Script von Jigal van Hemert  von den Deklarationen her auf UTF-8 bringen. Das Script nach fileadmin kopieren und im Browser ausführen, es folgen ausführliche Ausgaben was er macht. Vor echter Wirkung muss man in Zeile 20 scharf schalten:
//Set to FALSE to really convert the database
define('SIMULATE', FALSE);

Inhalte korregieren

Danach ist die Datanbank inhaltlich immer noch latin1, die einzelnen Zeichen müssen konvertiert werden:

Doch iconv scheitert an irgendwelchen Problemen mit

iconv: illegal input sequence at position 13636675

Dies läßt sich jedoch mit dem Schalter -c beheben, er macht dann trotzdem weiter und läßt die kritischen Zeichen einfach weg.

mysqldump -u root -p t3_abitur1981 --default-character-set latin1 > t3_abitur1981_latin1.sql
iconv --verbose -c -f ISO-8859-1 -t UTF-8 t3_abitur1981_latin1.sql > t3_abitur1981.sql
mysql -u typo3 -p t3_abitur1981 <  t3_abitur1981.sql