Skip to main content
Validação HTML

Declaração de codificação interna “windows-1251” não corresponde à codificação real do documento (“utf-8”).

Sobre este problema HTML

Quando um navegador carrega um documento HTML, precisa de saber que codificação de caracteres usar para interpretar corretamente os bytes do ficheiro. O atributo charset da etiqueta <meta> (ou a declaração http-equiv="Content-Type") indica ao navegador que codificação esperar. Se esta declaração indica windows-1251 mas o ficheiro está efetivamente guardado como utf-8, o navegador enfrenta sinais contraditórios — a codificação declarada não corresponde ao conteúdo real dos bytes.

Esta incompatibilidade é importante por várias razões:

  • Renderização de texto quebrada: Caracteres fora do intervalo ASCII básico (como letras acentuadas, caracteres cirílicos, CJK, emojis e símbolos especiais) podem ser exibidos como corrompidos ou caracteres de substituição (frequentemente vistos como sequências Ð, , ou outros mojibake).
  • Integridade de dados: Submissões de formulários e operações de strings JavaScript podem produzir dados corrompidos se o navegador interpretar incorretamente a codificação.
  • Conformidade com normas: A Norma Viva HTML WHATWG requer que a declaração de codificação corresponda à codificação real do documento. Os validadores sinalizam esta incompatibilidade como um erro.
  • Comportamento inconsistente: Diferentes navegadores podem lidar com o conflito de forma diferente — alguns podem confiar na etiqueta <meta>, outros podem detetar a codificação real — levando a resultados imprevisíveis entre diferentes user agents.

Como corrigir

  1. Determine a codificação real do seu ficheiro. A maioria dos editores de texto modernos (VS Code, Sublime Text, Notepad++) exibe a codificação do ficheiro na barra de estado. Se o seu ficheiro está guardado como UTF-8 (que é a codificação recomendada para todo o conteúdo web novo), a sua etiqueta <meta> deve refletir isso.

  2. Atualize a etiqueta <meta> para declarar utf-8 em vez de windows-1251.

  3. Prefira a sintaxe mais curta charset introduzida no HTML5, que é mais simples e equivalente à forma http-equiv mais antiga.

  4. Coloque a declaração de codificação dentro dos primeiros 1024 bytes do documento, idealmente como o primeiro elemento dentro de <head>, para que o navegador a encontre antes de analisar outro conteúdo.

Exemplos

❌ Incorreto: codificação declarada não corresponde à codificação real do ficheiro

O ficheiro está guardado como UTF-8 mas a etiqueta <meta> declara windows-1251:

<head>
  <meta charset="windows-1251">
  <title>My Page</title>
</head>

Ou usando a sintaxe http-equiv mais antiga:

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>My Page</title>
</head>

✅ Correto: codificação declarada corresponde ao ficheiro UTF-8 real

Usando o atributo charset moderno do HTML5:

<head>
  <meta charset="utf-8">
  <title>My Page</title>
</head>

Ou usando a forma http-equiv equivalente:

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>My Page</title>
</head>

✅ Correto: exemplo completo do documento

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>My Page</title>
  </head>
  <body>
    <p>Hello, world!</p>
  </body>
</html>

E se você realmente precisar de windows-1251?

Se o seu conteúdo genuinamente requer codificação windows-1251 (por exemplo, um ficheiro de texto cirílico legado), precisa de reguardar o ficheiro na codificação windows-1251 usando o seu editor de texto. No entanto, UTF-8 é fortemente recomendado para todo o conteúdo web porque suporta todos os caracteres Unicode e é a codificação padrão para HTML5. Converter o seu ficheiro para UTF-8 e atualizar a etiqueta <meta> em conformidade é quase sempre o melhor caminho a seguir.

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.