Eu tenho uma página HTML que corretamente (a codificação do físico no disco corresponde a ele) anuncia seu tipo de conteúdo :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content=
"text/html; charset=utf-8">
<title> ...
Abrir o arquivo do disco no navegador (Google Chrome, Firefox) funciona bem.
Solicitando-o via HTTP, o servidor da web envia um cabeçalho de Tipo de Conteúdo diferente:
$ curl -I http://example.com/file.html
HTTP/1.1 200 OK
Date: Fri, 19 Oct 2012 10:57:13 GMT
...
Content-Type: text/html; charset=ISO-8859-1
(veja a última linha). O navegador usa o ISO-8859-1 para exibir qual é um resultado indesejado.
Existe uma maneira comum de substituir os cabeçalhos do servidor enviados ao navegador de dentro do documento HTML?
;charset=...
cabeçalho do http. O site funciona muito bem comContent-Type: text/html
arquivos diferentes com codificações diferentes no servidor. (Receio que isso também não seja possível, porque acho que o procurei há algumas semanas, mas o resultado não foi bem final). Apenas no caso de você poder lançar alguma luz à frente.Você deve definir algo como isso em seu .htaccess raiz
fonte
Não, não é possível de dentro do HTML. O cabeçalho de resposta dos servidores tem precedência sobre a metatag do documento. Conforme especificado em 5.2.2 Especificando a codificação de caracteres - Especificação HTML 4.01 :
Portanto, isso requer configuração no lado do servidor. No entanto, à medida que o capítulo continua:
No meu caso, o cabeçalho Content-Type do servidor contém o tipo MIME correto , mas o conjunto de caracteres errado .
Como se viu, minha configuração httpd do Apache havia
AddDefaultCharset
ativado o que estava adicionando a; charset=ISO-8859-1
peça. Colocando no diretório raiz do site.htaccess
a seguinte linha:as informações do conjunto de caracteres foram removidas:
(veja a última linha, nenhuma
; charset=...
parte). Isso, em combinação com a metatag html, aciona as heurísticas do navegador para assumir o charset da metatag. O site está corretamente decodificado.Testado com:
Esses três navegadores tiveram problemas com a configuração original e funcionam agora (todos no Fedora 17).
Não teve o problema em primeiro lugar. Ambos preferiam o UTF-8 da metatag sobre a configuração ISO-8859-1 do servidor.
Como não suporta UTF-8, sempre escolhe Western (Latin1), independentemente da configuração do servidor e da meta tag.
fonte
Além do que foi dito aqui, eu tentaria usar o mesmo conjunto de caracteres em todas as páginas - de preferência
UTF-8
(mas se quase tudo aconteceriso-8859-1
, use isso).Para verificar rapidamente o conjunto de caracteres de um arquivo, você pode tentar:
Para verificar o conjunto de caracteres de todos os arquivos na árvore, você pode tentar:
ou (chamando o
file
comando apenas uma vez):Para obter um resumo, use a
-b
opção dofile
comando (para omitir os nomes dos arquivos) e canalize o resultado parasort | uniq -c
.fonte