Sobre este problema HTML
A especificação HTML determina que os documentos devem ser codificados em UTF-8. Este requisito existe porque o UTF-8 é a codificação de caracteres universal que suporta virtualmente todos os caracteres de todos os sistemas de escrita do mundo. Codificações mais antigas como windows-1252, iso-8859-1, ou shift_jis apenas suportam um subconjunto limitado de caracteres e podem causar a exibição incorreta de texto — mostrando caracteres corrompidos ou pontos de interrogação — especialmente para utilizadores em diferentes localizações ou quando o conteúdo inclui símbolos especiais, letras acentuadas, ou emojis.
Quando o validador encontra charset=windows-1252 na sua tag <meta>, sinaliza isto como um erro porque o padrão HTML living (WHATWG) afirma explicitamente que a declaração de codificação de caracteres deve especificar utf-8 como a codificação. Isto não é apenas uma preferência estilística — navegadores e outras ferramentas dependem desta declaração para interpretar corretamente os bytes no seu documento. Usar uma codificação não-UTF-8 pode levar a vulnerabilidades de segurança (como ataques XSS baseados em codificação) e problemas de acessibilidade quando tecnologias assistivas interpretam mal os caracteres.
Para corrigir este problema, siga dois passos:
-
Atualize a tag
<meta>para declararutf-8como o charset. -
Volte a guardar o seu ficheiro com codificação UTF-8. A maioria dos editores de código modernos (VS Code, Sublime Text, etc.) permitem-lhe escolher a codificação ao guardar — procure uma opção como “Guardar com Codificação” ou verifique a barra de estado para a codificação atual. Se o seu ficheiro estava originalmente em
windows-1252, simplesmente alterar a tag<meta>sem recodificar o ficheiro pode causar a exibição incorreta de caracteres especiais existentes.
A especificação HTML também recomenda usar a forma mais curta <meta charset="utf-8"> em vez da diretiva pragma mais longa <meta http-equiv="Content-Type" ...>, pois é mais simples e alcança o mesmo resultado. Qualquer forma é válida, mas a declaração do charset deve aparecer dentro dos primeiros 1024 bytes do documento.
Exemplos
Incorreto: Usar charset windows-1252
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
Isto gera o erro do validador porque o charset não é utf-8.
Correto: Usar a declaração curta de charset (recomendado)
<meta charset="utf-8">
Correto: Usar a diretiva pragma http-equiv com utf-8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Exemplo de documento completo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Note que a tag <meta charset="utf-8"> deve ser o primeiro elemento dentro de <head>, antes de quaisquer outros elementos (incluindo <title>), para que o navegador conheça a codificação antes de começar a analisar o resto do documento.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.