Qual é o problema?
Sua página tem uma declaração de charset, mas ela não é o primeiro elemento dentro da tag <head>. A especificação HTML recomenda que a meta tag de charset apareça nos primeiros 1024 bytes do documento, e a boa prática é torná-la a primeira tag.
Por que a ordem importa?
Parsing do navegador
- O navegador precisa saber a codificação de caracteres antes de conseguir interpretar corretamente qualquer texto
- Se o charset aparecer depois de outros elementos (como
<title>), o navegador pode já ter interpretado caracteres de forma errada - Isso pode causar um re-parse do documento, gerando um flash visível
Segurança
- A especificação HTML5 exige que o charset esteja nos primeiros 1024 bytes por motivos de segurança
- Declarações tardias de charset podem ser exploradas em ataques baseados em codificação (UTF-7 XSS)
Renderização correta
- Caracteres não ASCII em
<title>ou em outras meta tags iniciais podem ficar corrompidos se o charset ainda não tiver sido declarado
Como corrigir
Mova a declaração de charset para ser o primeiro elemento dentro de <head>:
<head>
<meta charset="UTF-8" />
<title>Your Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- other meta tags after -->
</head>
Ordem recomendada no head
<meta charset="UTF-8" />— Deve ser o primeiro<meta name="viewport" ...>— Cedo, para renderização correta<title>— Título da página<meta name="description" ...>— Descrição para SEO- Outras meta tags (OG, Twitter, etc.)
- CSS e outros recursos
Erros comuns
<!-- Ruim: title antes do charset -->
<head>
<title>My Page with Spëcial Chàracters</title>
<meta charset="UTF-8" />
</head>
<!-- Bom: charset primeiro -->
<head>
<meta charset="UTF-8" />
<title>My Page with Spëcial Chàracters</title>
</head>