PHP default charset

Beim Update der PHP Version meines Hosters auf 5.6 und höher, werden die Umläute nicht mehr sauber dargestellt. Hintergrund ist, dass die Seiten PHP intern jetzt als UTF-8 verarbeitet werden. Hier hilft es auch nicht, das Charset umzustellen. Beispiel:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Abhilfe schafft entweder eine globale Einstellung in der php.ini Datei oder man kann es gezielt für Software umstellen, welche explizit auf einen anderen Zeichensatz, wie ISO-8859-1 ausgelegt ist. Dies geschiet im Hauptverzeichnis der Installation (bei mir ein eigenes CMS) mit einer .htaccess Datei. Folgender Inhalt, muss in die Datei .htaccess eingefügt werden. Dabei ist der Punkt am Anfang wichtig. Er versteckt unter Unix/Linux/BSD die Datei vor dem normalem Benutzer. ggf ist diese im FTP/SCP Programm nicht sichtbar. Hier kann man die Datei hochladen ohne Punkt und am Webshare dann denn Punkt vorne ergänzen.

AddDefaultCharset iso-8859-1
php_value default_charset iso-8859-1

Anschließend werden die Zeichen wieder korrekt dargestellt. Das Verfahren ist aktuell nur nötig, da das eigene CMS dies nicht unterstützt und auf den „alten“ Zeichensatz angewiesen ist. Der Blog hingegen läuft bereits intern mit UTF-8.

Wichtig ist dies auch, wenn die Datenbank den Inhalt als Iso-Text speichert. Bei der Konvertierung werden die Umlaute dann nicht korrekt übernommen.

<persönlich>Für neue Systeme sollte man gleich auf UTF-8 setzen :) </persönlich>

Leave a comment

Your comment