Webseiten unter PHP als UTF-8 codiert auszugeben ist gar nicht so einfach, wie es vielleicht scheint. Nachdem ich mit dem Apache-Parameter AddDefaultCharset UTF-8 und der PHP-Einstellung default_charset = "utf-8" nicht zum gewünschten Ergebnis gekommen bin (Umlaute werden weiterhin als Fragezeichen (?) dargestellt), habe ich eine etwas umständliche aber praktikable Lösung gefunden.
Am Anfang jeder PHP-Datei habe ich zunächst den Output-Buffer aktiviert (ob_start();) um die Ausgaben von PHP nicht direkt als HTML auszugeben, sondern erst einmal zwischenzuspeichern. Dadurch kann ich vor der letztendlichen Ausgabe noch die Funktion utf8_encode() auf diese anwenden und alles als UTF-8 codiert ausgeben.
Damit ich nicht in jede einzelne Datei die nötigen Zeilen einfügen muss, arbeite ich mit zwei Includes, die als Kopf und Fuß jeder Seite inkludiert werden. Die Inhalte dieser Dateien sehen wie folgt aus (ich habe nur die für die UTF-8-Codierung relevanten Teile dargestellt):
header.inc.php
ob_start();
footer.inc.php
$content = utf8_encode(ob_get_contents());
ob_end_clean();
echo $content;
Hey!
Das hat mir sehr geholfen und ist vor allem verständlich geschrieben.
Danke schön. 🙂