Umstellung auf PHP 5.4, Umlaute werden falsch angezeigt
Hallo, seit der Umstellung von PHP 5.2 auf PHP 5.4 werden Umlaute nicht mehr richtig angezeigt. Wenn ich Formulare abschicke, werden nur die Wörter ohne Umlaute in die MySQL-Datenbank übernommen, die mit bleiben einfach weg. Wenn ich Daten abrufe werden die Umlaute auch falsch angezeigt.
Die Website habe ich mit iso-8859-1 erstellt. Die Umlaute werden in der MySQL-Datenbank mit ü usw. gespeichert. Bei der Tabelle ist die Kollation latin1german2ci eingestellt. Vielen Dank.
2 Antworten
Wenn Worte mit Umlauten fehlen liegt das meist daran, dass htmlentities/htmlspecialchars in der neueren Version nicht korreckt die Dateneingaben als iso-8859-1 erkennt. Lösung, das explizit per Parameter zu erzwingen:
htmlentities($str, ENT_QUOTES, "iso-8859-1");
Bei der fehlerhaften Ausgabe der Daten liegt es daran, dass php in der neuen Version per default einen UTF-8 Header sendet, das kann man in der .htaccess zum Beispiel ändern:
php_value default_charset "iso-8859-1"
Wie man im Changelog (http://net.tutsplus.com/tutorials/php/php-5-4-is-here-what-you-must-know/) nachlesen kann wurde der Standardzeichensatz bei PHP 5.4 auf UTF-8 geändert (endlich ;) ). Du solltest:
- prüfen, welcher Zeichensatz im HTTP-Header tatsächlich zurückgegeben wird
- die Datenbankverbindung zwangsweise auf deinen ISO-Charset setzen (siehe PHP-Manual zu mysql::setCharset())
Unabhängig davon würde ich dir ohnehin raten alles auf UTF-8 umzustellen.