HTTP header instellen op UTF-8 met PHP

Ik heb verschillende PHP pagina's die verschillende dingen echoën in HTML pagina's met de volgende code.

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

Echter, wanneer ik valideer met de W3C validator komt er uit:

The character encoding specified in the HTTP header (iso-8859-1) is different from the value in the <meta> element (utf-8).

Ik ben vrij nieuw met PHP, en ik vroeg me af of ik de header voor de PHP bestanden kan en moet veranderen zodat deze overeenkomt met de HTML bestanden.

Oplossing

Gebruik header om de HTTP header te wijzigen:

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

Merk op dat je deze functie moet aanroepen voordat er uitvoer naar de client is gestuurd. Anders is de header ook al verzonden en kun je hem natuurlijk niet meer wijzigen. Je kunt dat controleren met headers_sent. Zie de manual page van header voor meer informatie.

Commentaren (6)

Zorg er eerst voor dat de PHP bestanden zelf UTF-8 gecodeerd zijn.

De meta tag wordt door sommige browsers genegeerd. Als u alleen ASCII-tekens gebruikt, maakt het toch niet uit.

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

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

Dit is een probleem met uw webserver die een HTTP-header verstuurt die niet overeenkomt met de header die u definieert. Voor instructies om de server de juiste headers te laten sturen, zie deze pagina.

U kunt ook PHP gebruiken om de headers aan te passen, maar dit moet gebeuren voordat u tekst uitvoert met deze code:

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

Meer informatie over het versturen van headers met PHP is te vinden in de documentatie voor de header-functie.

Commentaren (0)