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 :
Para resumir, os agentes de usuário em conformidade devem observar as seguintes prioridades ao determinar a codificação de caracteres de um documento (da prioridade mais alta para a mais baixa):
- Um parâmetro HTTP "charset" em um campo "Content-Type".
- Uma declaração META com "http-equiv" definido como "Content-Type" e um valor definido para "charset".
- O atributo charset configurado em um elemento que designa um recurso externo.
Portanto, isso requer configuração no lado do servidor. No entanto, à medida que o capítulo continua:
Os agentes do usuário podem fornecer um mecanismo que permite aos usuários substituir informações incorretas do "conjunto de caracteres". No entanto, se um agente de usuário oferece esse mecanismo, ele deve ser oferecido apenas para navegação e não para edição, para evitar a criação de páginas da Web marcadas com um parâmetro "charset" incorreto.
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:
AddDefaultCharset Off
as informações do conjunto de caracteres foram removidas:
$ curl -I http://example.com/file.html
HTTP/1.1 200 OK
Date: Fri, 19 Oct 2012 15:07:52 GMT
...
Content-Type: text/html
(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:
- Google Chrome v. 22.0.1229.94
- Firefox v. 16.0.1
- Versão do Lynx 2.8.7rel.1 (05 de julho de 2009)
Esses três navegadores tiveram problemas com a configuração original e funcionam agora (todos no Fedora 17).
- Opera 12.02
- Internet Explorer 6 (Win XP SP3)
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.