Skip to main content
Validação HTML

A codificação de caracteres não foi declarada. Prosseguindo com “windows-1252”.

Sobre este problema HTML

A codificação de caracteres diz ao navegador como mapear os bytes brutos do seu ficheiro HTML em caracteres legíveis. Quando nenhuma codificação é declarada, os navegadores devem confiar em heurísticas ou predefinições para descobrir qual codificação usar. O recurso do validador ao “windows-1252” reflete o comportamento descrito na especificação HTML: se nenhuma informação de codificação for encontrada, os analisadores podem usar como predefinição esta codificação legada. Isto pode causar problemas sérios — caracteres como aspas curvadas, travessões longos, letras acentuadas, emoji e scripts não-latinos podem aparecer como texto corrompido (muitas vezes chamado “mojibake”) se a codificação real do ficheiro não corresponder ao que o navegador assume.

Porque isto é importante

  • Correção: Se o seu ficheiro for guardado como UTF-8 (que é a predefinição na maioria dos editores modernos) mas o navegador o interpretar como windows-1252, caracteres multi-byte irão renderizar incorretamente.
  • Conformidade com padrões: O WHATWG HTML Living Standard exige que uma declaração de codificação de caracteres esteja presente. A codificação deve também ser declarada dentro dos primeiros 1024 bytes do documento.
  • Segurança: Codificação ambígua pode ser explorada em certos ataques de cross-site scripting (XSS) onde um atacante tira vantagem de incompatibilidades de codificação.
  • Interoperabilidade: Diferentes navegadores podem escolher diferentes codificações de recurso, levando a renderização inconsistente entre plataformas.

Como corrigir

A correção mais simples e recomendada é adicionar <meta charset="utf-8"> como o primeiro elemento filho dentro de <head>, antes de <title> ou qualquer outros elementos. Deve aparecer dentro dos primeiros 1024 bytes do documento para que o analisador o encontre suficientemente cedo.

UTF-8 é o padrão universal para a web. Pode representar cada carácter em Unicode, é retrocompatível com ASCII, e é a codificação recomendada pela especificação WHATWG HTML. A menos que tenha uma razão muito específica para usar outra codificação, use sempre UTF-8.

Deve também garantir que o seu editor de texto ou ferramenta de compilação está realmente a guardar o ficheiro na codificação UTF-8. Declarar <meta charset="utf-8"> enquanto o ficheiro é guardado numa codificação diferente irá ainda produzir texto corrompido.

Uma abordagem alternativa (menos comum) é declarar a codificação através de um cabeçalho HTTP Content-Type enviado pelo servidor, tal como Content-Type: text/html; charset=utf-8. No entanto, a tag <meta> é ainda recomendada como recurso para quando os ficheiros são visualizados localmente ou em cache sem cabeçalhos.

Exemplos

❌ Declaração de codificação de caracteres em falta

Este documento não tem declaração de codificação, acionando o aviso do validador:

<!DOCTYPE html>
<html lang="en">
<head>
  <title>My Page</title>
</head>
<body>
  <p>Héllo, wörld! — enjoy "quotes" and emöji 🎉</p>
</body>
</html>

✅ Corrigido com <meta charset="utf-8">

Adicionar a tag <meta charset="utf-8"> como o primeiro elemento em <head> resolve o problema:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>My Page</title>
</head>
<body>
  <p>Héllo, wörld! — enjoy "quotes" and emöji 🎉</p>
</body>
</html>

❌ Codificação declarada demasiado tarde

O <meta charset> deve vir antes de outro conteúdo no <head>. Colocá-lo depois de um <title> que contém caracteres não-ASCII significa que o analisador pode já ter comprometido com uma codificação errada:

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Café Menu</title>
  <meta charset="utf-8">
</head>
<body>
  <p>Welcome to the café.</p>
</body>
</html>

✅ Codificação declarada antes de todo o outro conteúdo

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Café Menu</title>
</head>
<body>
  <p>Welcome to the café.</p>
</body>
</html>

A conclusão chave: coloque sempre <meta charset="utf-8"> como o primeiro elemento dentro de <head>. Esta é uma pequena adição que previne toda uma classe de problemas de renderização de caracteres e segurança.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.