Umstellung auf PHP 5.4, Umlaute werden falsch angezeigt

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.

Woher ich das weiß:Berufserfahrung – mit dem Internet verbunden seit 1993