Skip to main content
Validação HTML

Referência de caractere expande para um caractere de controlo (U+0002).

Sobre este problema HTML

O que são caracteres de controlo?

Os caracteres de controlo ocupam os pontos de código U+0000 a U+001F e U+007F a U+009F em Unicode. Foram originalmente concebidos para controlar dispositivos de hardware (por exemplo, U+0002 é “Start of Text”, U+0007 é “Bell”, U+001B é “Escape”). Estes caracteres não têm representação visual e não carregam qualquer significado semântico num documento web.

A especificação HTML proíbe explicitamente referências de caracteres que resolvem para a maioria dos caracteres de controlo. Embora a sintaxe  seja uma referência de caractere estruturalmente válida, o caractere para o qual aponta não é um caractere de conteúdo permitido. O validador W3C levanta este erro para sinalizar referências como �, , ,  e outras que se enquadram nos intervalos de caracteres de controlo.

Porque é que isto é um problema

  • Conformidade com as normas: O WHATWG HTML Living Standard define um conjunto específico de pontos de código “noncharacter” e “control character” que não devem ser referenciados. Usá-los produz um erro de análise.
  • Renderização imprevisível: Os navegadores lidam com caracteres de controlo ilegais de forma inconsistente. Alguns podem descartá-los silenciosamente, outros podem renderizar um caractere de substituição (�), e outros podem exibir comportamento inesperado.
  • Acessibilidade: Leitores de ecrã e outras tecnologias de apoio podem engasgar-se ou interpretar mal os caracteres de controlo, degradando a experiência para utilizadores que dependem destas ferramentas.
  • Integridade dos dados: Caracteres de controlo na sua marcação frequentemente indicam um erro de copiar-colar, uma fonte de dados corrompida, ou um erro de template que insere dados binários brutos na saída HTML.

Como corrigir

  1. Identifique a referência problemática — procure por referências de caracteres como , , �, , ou similares que apontem para pontos de código de caracteres de controlo.
  2. Determine a intenção — descubra que caractere ou conteúdo era realmente pretendido. Frequentemente, uma referência de caractere de controlo é o resultado de um erro num pipeline de dados ou motor de templates.
  3. Remova ou substitua — elimine completamente a referência ou substitua-a pelo caractere imprimível ou entidade HTML corretos.

Exemplos

Incorreto: referência de caractere de controlo

Esta marcação contém , que expande para o caractere de controlo U+0002 (Start of Text) e desencadeia o erro de validação:

<p>Algum texto &#2; mais texto</p>

Incorreto: forma hexadecimal de um caractere de controlo

O mesmo problema ocorre com a sintaxe hexadecimal:

<p>Dados: </p>

Correto: remover a referência de caractere de controlo

Se o caractere de controlo foi não intencional, simplesmente remova-o:

<p>Algum texto mais texto</p>

Correto: usar uma referência de caractere válida

Se pretendia exibir um caractere especial, use o ponto de código imprimível correto ou entidade nomeada. Por exemplo, para exibir uma lista de marcadores (•), símbolo de copyright (©), ou ampersand (&):

<p>Item &#8226; Detalhes</p>
<p>Copyright &#169; 2024</p>
<p>Tom &amp; Jerry</p>

Correto: documento completo sem caracteres de controlo

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Página de Exemplo</title>
</head>
<body>
  <p>Este parágrafo usa apenas referências de caracteres válidas: &amp; &lt; &gt; &#169;</p>
</body>
</html>

Pontos de código de caracteres de controlo comuns a evitar

Referência Ponto de código Nome
&#0; U+0000 Null
&#1; U+0001 Start of Heading
&#2; U+0002 Start of Text
&#7; U+0007 Bell
&#8; U+0008 Backspace
&#11; U+000B Vertical Tab
&#12; U+000C Form Feed
&#127; U+007F Delete

Se o seu conteúdo é gerado dinamicamente (de uma base de dados, API, ou entrada do utilizador), sanitize os dados antes de os inserir no HTML para remover caracteres de controlo. A maioria das linguagens do lado do servidor e motores de templates fornecem utilitários para este propósito.

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.