tigtools

Codificador/decodificador de entidades HTML

Prepare o texto para inseri-lo em HTML ou converta entidades como & e é em caracteres normais.

Executado no seu navegador Sem cadastro

Direção

& < > " e ' são sempre escapados. Os outros caracteres só são convertidos se você escolher uma opção para caracteres não ASCII.

Como usar

  1. Selecione Codificar para preparar o texto para HTML ou Decodificar para converter entidades em caracteres novamente.
  2. Ao codificar, escolha se as letras acentuadas e os símbolos devem ser mantidos ou convertidos em entidades.
  3. Digite ou cole o texto; o resultado é atualizado na hora.
  4. Copie o resultado ou use “Usar saída como entrada” para verificar se ele é decodificado de volta ao original.

Como funciona

Em HTML, alguns caracteres têm um significado especial: < inicia uma tag, & inicia uma entidade, e " ou ' encerram o valor de um atributo. Para exibi-los como texto, é preciso escrevê-los como referências de caracteres: &lt; para <, &gt; para >, &amp; para &, &quot; para " e &#39; para '. O apóstrofo usa a forma numérica porque &apos; não é definido no HTML 4.

Todos os outros caracteres, incluindo letras acentuadas, texto em chinês e emojis, podem ser escritos diretamente quando a página é salva e servida como UTF-8, o padrão em sites modernos. A conversão para entidades só é necessária em sistemas que não oferecem suporte adequado a UTF-8, como alguns modelos antigos de e-mail ou bancos de dados. Nesse caso, você pode escolher entidades nomeadas, como &eacute;, quando houver um nome comum (com uma alternativa numérica para os demais caracteres), ou referências numéricas, como &#xE9;, para cada caractere.

A decodificação não usa o analisador HTML do navegador. Ela usa uma tabela integrada com todas as 252 entidades nomeadas do HTML 4.01, &apos; e cerca de 30 nomes comuns do HTML5, além de referências decimais e hexadecimais. As referências numéricas seguem as regras do HTML5: &#0;, valores substitutos e valores acima de U+10FFFF são convertidos para o caractere de substituição �, e os valores de 128 a 159 são interpretados como Windows-1252, portanto &#150; se torna um travessão. Alguns nomes antigos, como &amp e &copy, também são aceitos sem o ponto e vírgula final, como nos navegadores. O HTML5 define mais de 2.000 nomes; os nomes raros que não estão na tabela permanecem inalterados e são listados.

Escapar texto antes de inseri-lo em HTML é uma medida importante contra cross-site scripting (XSS), mas só é correto para conteúdo de elementos e valores de atributos entre aspas. O texto inserido dentro de um bloco <script>, de um atributo style ou de uma URL precisa de outro tipo de escape.

Exemplos

Exibir código em uma página da web

Para exibir <div class="box"> como texto em uma publicação de blog, converta-o para &lt;div class=&quot;box&quot;&gt;. O navegador mostra a tag original em vez de criar um elemento.

Preparando texto para um modelo de e-mail antigo

Com a opção “Entidades nomeadas quando disponíveis”, “Café – 5 €” se transforma em Caf&eacute; &ndash; 5 &euro;, que é exibido corretamente mesmo que o e-mail seja enviado com um conjunto de caracteres que não seja UTF-8.

Limpando texto extraído ou exportado

Uma exportação de CMS contém Fish &amp; Chips &#8211; &pound;9. Ao decodificar, o resultado é Fish & Chips – £9, pronto para colar em uma planilha.

Perguntas frequentes

Quais caracteres precisam ser escapados em HTML?

No conteúdo de elementos, & e < devem ser escapados (também é recomendado escapar >). Em valores de atributos, escape também o caractere de aspas que delimita o valor. Escapar os cinco caracteres (& < > " ') em todos os casos é a regra simples e segura adotada por esta ferramenta.

Qual é a diferença entre entidades nomeadas e numéricas?

Entidades nomeadas, como &copy;, são mais fáceis de ler, mas existem apenas para um conjunto limitado de caracteres. Referências numéricas, como &#169; (decimal) ou &#xA9; (hexadecimal), funcionam para todos os caracteres Unicode, inclusive emojis.

Por que &nbsp; é decodificado como algo que parece um espaço?

&nbsp; é um espaço não separável (U+00A0). Ele parece um espaço normal, mas impede a quebra de linha e não é reduzido pelo HTML. É um caractere diferente do espaço comum, o que importa ao comparar ou pesquisar texto.

Preciso codificar letras acentuadas, como é?

Não, se sua página usar UTF-8 (<meta charset="utf-8">), como acontece em quase todas as páginas modernas. Mantenha a configuração padrão para escapar apenas os cinco caracteres especiais.

A codificação é suficiente para evitar XSS?

É suficiente para texto não confiável inserido no conteúdo de elementos HTML ou em valores de atributos entre aspas. Não é suficiente para código JavaScript, CSS, atributos sem aspas ou URLs como href="javascript:…", que exigem tratamento específico para cada contexto.

Privacidade

A codificação e a decodificação são feitas no navegador com operações simples de texto; seu texto nunca é renderizado como HTML, enviado, armazenado ou incluído em análises.