Establecer el encabezado HTTP a UTF-8 usando PHP

Tengo varias páginas PHP haciendo eco de varias cosas en páginas HTML con el siguiente código.

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

Sin embargo, cuando valido usando el validador W3C aparece:

La codificación de caracteres especificada en la cabecera HTTP (iso-8859-1) es diferente del valor del elemento <meta> (utf-8).

Soy bastante nuevo en PHP, y me preguntaba si puedo y debo cambiar la cabecera de los archivos PHP para que coincida con los archivos HTML.

Solución

Utilice header para modificar la cabecera HTTP:

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

Tenga en cuenta que debe llamar a esta función antes de que se haya enviado cualquier salida al cliente. De lo contrario, la cabecera también se ha enviado y, obviamente, ya no podrá modificarla. Puede comprobarlo con headers_sent. Consulte la página de manual de header para más información.

Comentarios (6)

En primer lugar, asegúrese de que los propios archivos PHP están codificados en UTF-8.

La etiqueta meta es ignorada por algunos navegadores. Si sólo utiliza caracteres ASCII, no importa de todos modos.

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

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

Este es un problema con su servidor web que envía una cabecera HTTP que no coincide con la que usted define. Para obtener instrucciones sobre cómo hacer que el servidor envíe las cabeceras correctas, consulte esta página.

Si no, también puede usar PHP para modificar las cabeceras, pero esto tiene que hacerse antes de emitir cualquier texto usando este código:

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

Puede encontrar más información sobre cómo enviar cabeceras usando PHP en la documentación de la función de cabecera.

Comentarios (0)