Webseiten unter PHP in UTF-8 codiert ausgeben

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;

Über Stefan

Polyglot Clean Code Developer

Ein Kommentar

  1. Hey!

    Das hat mir sehr geholfen und ist vor allem verständlich geschrieben.
    Danke schön. 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax