Hallo Bernd, > bei leerem setDBinit geht TYPO3 wohl von latin1 aus und bearbeitet alles noch > einmal, obwohl es eigentlich richtig wäre.
Nicht TYPO3. In älteren PHP-Versionen ist die Datenbank-Verbindung per Default auf latin. MySQL erwartet dann latin-Daten. Um das zu verhindern muss man in php so vorgehen: $db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT); $db_sel = mysql_select_db( MYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen"); $sql = "set names 'utf8';"; mysql_query( $sql,$db_link ); return $db_link; damit wird die Verbindung für den aktuellen DB-Zeiger ($db_link) auf utf8 umgestellt. Das tut innerhalb von TYPO3 die Einstellung setDBinit im Install-Tool. Wenn die fehlt, dann werden utf8-Daten über eine latin-Verbindung an die DB gesendet, die dann die utf8-Daten erneut nach utf8 kodiert. Beim Auslesen findet der umgekehrte Prozess statt. Tatsächlich gibt es nirgends wirklich latin-Daten; und es hängt nicht direkt mit TYPO3 zusammen sondern mit den PHP-Versionen und der Konfiguration der Datenbank-Verbindung. > wenn also daten in die DB geschrieben werden konvertiert TYPO3 deien UTF8 > daten nach latin1, Stimmt so m. W. nicht. in TYPO3 ist noch alles korrekt, nur die Verbindung zur DB ist latin. Die Daten werden völlig korrekt verarbeitet, aber MySQL erwartet aufgrund der DB-Verbindung latin und konvertiert selbst nach utf8. Da die Daten bereits utf8 sind, werden sie doppelt utf8 kodiert gespeichert. Der Übeltäter ist also eigentlich die Datenbank - und deshalb kann man es über Export in einen latin-Dump korrigieren. Wenn man PHP updatet (oder TYPO3) dann wird die DB-Verbindung plötzlich utf8 und MySQL konvertiert beim Ausliefern der Daten nicht mehr zuerst nach latin (also nach einfach utf8) sondern sendet direkt doppelt-utf8 kodierte Daten. Das sind dann diese kryptischen Zeichen in Back- und Frontend. Zwei Lösungen: die Daten von doppelt utf8 zu einfach utf8 konvertieren, oder die DB-Verbindung über setDBinit auf latin setzen. In PHP würde das so aussehen: $db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT); $db_sel = mysql_select_db( MYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen"); $sql = "set names 'latin';"; mysql_query( $sql,$db_link ); return $db_link; So stelle ich z. B. sicher, dass in eine DB wirklich latin geschrieben wird (in ein paar Anwendungen brauche ich noch latin). Innerhalb von TYPO3 würde das die Einstellung setDBInit="set names latin" bewirken. > beim aufbau der Verbindung zur DB die Konvertierung aktivieren, Das müsste dann allerdings "set names latin" lauten - das funktioniert in älteren TYPO3 Versionen, aber ich glaube nicht mehr in TYPO3 6.2. Bis TYPO3 4.5 habe ich das bei etlichen Installationen so gehandhabt. Kleine Zeitbomben, weil mich das beim Update auf 6.2 natürlich in den Hintern beissen wird :-) Das hier hilft vielleicht weiter: http://www.skom.de/Doppelt-UTF-8-kodierte-Daten-i.191.0.html Gruß Peter -- Xing: http://www.xing.com/profile/Peter_Linzenkirchner Web: http://www.typo3-lisardo.de Facebook: http://tinyurl.com/lisardo-multimedia _______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german