Por que um texto mostra «&» e como corrigir
Publicado em · Atualizado em 3 min de leitura
Você provavelmente já viu um texto mostrar «Tom & Jerry» em vez de «Tom & Jerry» em um site, em um e-mail ou em uma página de produto. Não é uma falha: uma entidade HTML foi codificada uma vez a mais. Este guia explica de onde vem o problema e como corrigi-lo.
O que é uma entidade HTML
No código de uma página da web, alguns caracteres têm um papel especial: o «&» inicia uma entidade, os sinais «<» e «>» cercam as tags. Para exibir esses caracteres como são, eles são substituídos por uma sequência de sinais chamada entidade. Cinco são comuns.
| Caractere | Entidade |
|---|---|
| & | & |
| < | < |
| > | > |
| " | " |
| ' (apóstrofo reto) | ' |
De onde vem a codificação dupla
Um texto às vezes passa por dois sistemas que codificam cada um: um editor e depois um modelo de página. Cada passagem transforma o «&» da entidade anterior. Com Entidades HTML, codificar «Tom & Jerry» dá «Tom & Jerry», e codificar esse resultado dá «Tom &amp; Jerry».
| Etapa | Texto obtido |
|---|---|
| Texto original | Tom & Jerry |
| Codificado uma vez | Tom & Jerry |
| Codificado duas vezes | Tom &amp; Jerry |
O navegador decodifica um nível ao exibir. Um texto codificado duas vezes aparece, portanto, com «&» em vez de «&».
Decodificar um nível por vez
A ferramenta retira um único nível de entidades por passagem. Se o resultado ainda contém entidades, o modo «Ambos» avisa e você roda a decodificação de novo sobre o resultado.
| Texto | Primeira decodificação | Segunda decodificação |
|---|---|---|
| Tom &amp; Jerry | Tom & Jerry | Tom & Jerry |
| &lt;b&gt;gras&lt;/b&gt; | <b>gras</b> | <b>gras</b> |
Decodificar um único nível evita desfazer uma codificação desejada: um exemplo de código que deve mostrar «&» na tela se escreve «&amp;» na página.
Acentos e símbolos
A decodificação entende todas as entidades nomeadas terminadas em ponto e vírgula, não só as cinco usuais. «café à 5 € © 2026» dá «café à 5 € © 2026», e o espaço não separável vira um espaço não separável de verdade. As entidades numéricas também são decodificadas: «été» dá «été», e «😀» como «😀» dão o mesmo emoji.
O que a ferramenta deixa intacto
- Uma entidade desconhecida como «&inconnue;» é deixada como está.
- Uma entidade sem ponto e vírgula final, como «&» ou «<» em uma frase, não é tocada.
- Um endereço com parâmetros, como «https://exemple.fr/?a=1¶m=2©=4», continua exato: «¶m» e «©» não são tomados por entidades ali.
Codificar um código para exibi-lo
Para mostrar um trecho de código em uma página, codifique-o uma vez. O texto «<a href="x">l’été & plus</a>» dá «<a href="x">l'été & plus</a>». As letras acentuadas não são codificadas, apenas os cinco caracteres reservados.
Evitar o problema
Codifique uma única vez, no último momento, quando o texto é escrito na página. Para substituir em massa os restos de uma codificação ruim, Buscar e substituir serve bem. Os endereços da web seguem outra codificação, explicada em Base64, hash e endereço codificado: não os confunda.
Onde o problema aparece
Em uma página de produto, um título de página, um e-mail automático ou um campo importado de outro site: um «&» vira «&» quando o texto é codificado duas vezes.
Conferir o resultado
- Rode a decodificação de novo enquanto a ferramenta avisar que restam entidades.
- Compare com o texto original na tela.
- Confira os espaços não separáveis e os emojis.
Perguntas frequentes
- Por que meu texto mostra «&»?
- Uma entidade HTML foi codificada uma vez a mais. O navegador decodifica um nível ao exibir, o segundo continua visível.
- Como corrigir?
- Decodifique um nível por vez com a ferramenta, até que ela não avise mais sobre entidades.
- A ferramenta decodifica os acentos?
- Sim, todas as entidades nomeadas terminadas em ponto e vírgula, e as entidades numéricas.
- Como evitar o problema?
- Codifique uma única vez, no último momento, quando o texto é escrito na página.
