Defina o cabeçalho HTTP para UTF-8 usando PHP

Eu tenho várias páginas PHP ecoando várias coisas em HTML páginas com o seguinte código.

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

Entretanto, quando eu valido usando o W3C validator ele vem à tona:

A codificação de caracteres especificada no cabeçalho HTTP (iso-8859-1) é diferente do valor no elemento <meta> (utf-8).

Eu sou bastante novo no PHP, e eu estava pensando se eu poderia e deveria mudar o cabeçalho dos arquivos PHP para combinar com os arquivos HTML.

Solução

Utilize header para modificar o cabeçalho HTTP:

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

Nota para chamar esta função antes de qualquer saída ter sido enviada para o cliente. Caso contrário, o cabeçalho também foi enviado e você obviamente não pode mais alterá-lo. Você pode verificar isso com headers_sent. Veja a página de manual do header para mais informações.

Comentários (6)

Primeiro certifique-se de que os próprios arquivos PHP estão UTF-8 codificados.

A meta tag é ignorada por algum navegador. Se você só usa caracteres ASCII, isso não importa de qualquer forma't.

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

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

Este é um problema com o seu servidor web enviando um cabeçalho HTTP que não corresponde ao que você define. Para instruções sobre como fazer o servidor enviar os cabeçalhos corretos, veja esta página.

Caso contrário, você também pode usar PHP para modificar os cabeçalhos, mas isto tem que ser feito antes de sair qualquer texto usando este código:

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

Mais informações sobre como enviar cabeçalhos usando PHP podem ser encontradas em a documentação para a função de cabeçalho.

Comentários (0)