typo3 installation (und MySQL Datenbank) auf russisch in utf8
Problem: Möchte man in einer typo3 installation russische texte abspeichern kommt folgende fehlermeldung:
102: These fields are not properly updated in database: (username) Probably value mismatch with fieldtype.
Lösung:
Im typoscript nach dem initialisieren des page Objektes folgende Zeilen einfügen (stellt das frontend auf utf8 um):
1 2 |
page.config.metaCharset = utf-8 page.config.additionalHeaders = Content-Type:text/html;charset=utf-8 |
Dann in der localconf.php (oder im install tool) mindestens die erste zeile des folgenden codeblocks einsetzen:
1 2 3 4 5 6 7 8 |
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8'; //setzt das admin-interface auf utf8 - ZWINGEND //Weitere je nach Fall relevante Einstellungen: $TYPO3_CONF_VARS['SYS']['multiplyDBfieldSize'] = '3'; // könnte helfen, muss nicht gesetzt werden, wenn die DB in utf8 ist $TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;'.chr(10).'SET CHARACTER_SET utf8;'.chr(10).'SET SESSION character_set_server=utf8;'; $TYPO3_CONF_VARS['SYS']['t3lib_cs_convMethod'] = 'mbstring'; $TYPO3_CONF_VARS['SYS']['t3lib_cs_utils'] = 'mbstring'; |
Zuletzt, wenn’s immer noch nicht klappt, die Datenbank auf im phpmyadmin utf8 umstellen und dann einige Tabellen:
1 2 3 |
ALTER TABLE tt_content CONVERT TO CHARACTER SET utf8; ALTER TABLE pages_language_overlay CONVERT TO CHARACTER SET utf8; ALTER TABLE sys_language CONVERT TO CHARACTER SET utf8; |
Weitere Links:
http://wiki.typo3.org/index.php/UFT-8_support
http://www.typo3forum.net/forum/typo3-4-x-fragen-probleme/43438-russische-sprache.html
Hi,
ich hab eure Anleitung gerade ausprobiert.
Wofür braucht man SET CHARACTER SET utf8 und
SET SESSION character_set_server = utf8?
Viele Grüße
Jörg
Kommentar by Jörg — 6. Juni 2010 @ 02:24
hallo jörg
die zeile:
$TYPO3_CONF_VARS[‘SYS’][’setDBinit’] = ‘SET NAMES utf8;’.chr(10).‘SET CHARACTER_SET utf8;’.chr(10).‘SET SESSION character_set_server=utf8;’;
weist typo3 an, beim vebindungsaufbau die definierten MySQL befehle abzusetzen.
damit utf8 strings auch als solche auf der website ankommen, muss die ganze kette in utf8 sein – also nicht ur der gespeicherte string und das PHP, sondern auch die kommunikation zwischen php und MySQL. eben diese wird mit obigen befehlen auf utf8 gesetzt.
beste grüsse
roman
Kommentar by Roman Abt — 6. Juni 2010 @ 10:31
Hi Roman,
vielen Dank für deine Antwort!
Nebenbei: Wenn [‘BE’][‘forceCharset’] = utf-8 gesetzt ist, werden in aktuellen TYPO3-Versionen die Werte für den Zeichensatz im FE automatisch gesetzt. Die zwei Zeilen im TypoScript-Template sind daher nicht mehr nötig.
Viele Grüße
Jörg
PS: Ob der Browser eine Seite als utf-8 darstellt, sollte schon im HTTP-Header, den der Server sendet, verbindlich festgelegt werden. Auch der wird mit [‘BE’][‘forceCharset’] = utf-8 auf utf-8 gesetzt.
Kommentar by Jörg — 6. Juni 2010 @ 12:20