HTTP-Header mit PHP auf UTF-8 setzen

Ich habe mehrere PHP-Seiten, die verschiedene Dinge in HTML-Seiten mit dem folgenden Code ausgeben.

<meta http-equiv="Content-type" content="text/html; charset=utf-8" />

Wenn ich jedoch mit dem W3C-Validator validiere, wird folgendes angezeigt:

Die im HTTP-Header angegebene Zeichenkodierung (iso-8859-1) unterscheidet sich von dem Wert im <meta> Element (utf-8).

Ich bin ein ziemlicher PHP-Neuling und habe mich gefragt, ob ich den Header für die PHP-Dateien ändern kann und sollte, damit er mit den HTML-Dateien übereinstimmt.

Lösung

Verwenden Sie header, um den HTTP-Header zu ändern:

header('Content-Type: text/html; charset=utf-8');

Beachten Sie, dass Sie diese Funktion aufrufen, bevor irgendeine Ausgabe an den Client gesendet wurde. Andernfalls ist der Header bereits gesendet worden und Sie können ihn nicht mehr ändern. Sie können das mit headers_sent überprüfen. Siehe die manual page of header für weitere Informationen.

Kommentare (6)

Stellen Sie zunächst sicher, dass die PHP-Dateien selbst UTF-8 kodiert sind.

Der Meta-Tag wird von einigen Browsern ignoriert. Wenn Sie nur ASCII-Zeichen verwenden, spielt es ohnehin keine Rolle.

http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

header('Content-Type: text/html; charset=utf-8');
Kommentare (0)

Es handelt sich um ein Problem, bei dem Ihr Webserver einen HTTP-Header sendet, der nicht mit dem von Ihnen definierten übereinstimmt. Eine Anleitung, wie Sie den Server dazu bringen, die richtigen Header zu senden, finden Sie auf dieser Seite.

Andernfalls können Sie auch PHP verwenden, um die Header zu ändern, aber das muss vor der Ausgabe von Text mit diesem Code geschehen:

header('Content-Type: text/html; charset=utf-8');

Weitere Informationen darüber, wie man Kopfzeilen mit PHP versendet, finden Sie in der Dokumentation zur Header-Funktion.

Kommentare (0)