Vor einigen Wochen hatte ich ja meinen Feedreader, der auf PHP basiert, hier präsentiert. Dort hatte ich ja um die Umlaute korrekt anzuzeigen preg_replace
benutzt. Allerdings war und ist das eine Lösung, welche mehr schlecht als recht funktioniert. Sonderzeichen werden beispielsweise trotzdem falsch ausgegeben, wie ich ein paar Tage später selbst feststellen durfte. Nun habe ich vor einigen Tagen eine bessere Lösung gefunden und möchte Euch diese erläutern.
Die Feeds werden bei WordPress ja in einer XML-Datei gespeichert. Diese hat bereits einen Zeichensatz, welcher sich um die korrekte Darstellung der Umlaute und Sonderzeichen kümmert. Dieser ist bei den Feeds von WordPress UTF-8. Das erkennt man gleich an der ersten Zeile, welche wie folgt lautet:
<?xml version="1.0" encoding="UTF-8"?>
Die eigene Website hat in meinem Fall den Zeichensatz ISO-8859-1, welchen man mit der folgenden Zeile, die sich zwischen dem head
-Tag befinden sollte, festlegt:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
Das sind also zwei unterschiedliche Zeichensätze. Das stellt aber kein Problem dar. PHP hat nämlich eine Funktion, mit der sich UTF-8 in ISO-8859-1 umwandeln lässt und diese heißt iconv
. Wenn man nun also eine Variable namens string
hat, in der ein Text aus den Feeds gespeichert wird, muss man einfach folgende Zeile benutzen:
$string = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string);
Seit dem werden bei mir alle Zeichen korrekt angezeigt. Ich hoffe, dass es dem einen oder anderen eine Hilfe ist und falls es noch Fragen geben sollte, diese einfach in die Kommentare schreiben.