UltKit

Codificador e decodificador de entidades HTML

Escape os caracteres que o HTML interpreta como marcação, e, se quiser, também todos os caracteres não ASCII, ou transforme entidades como é e — de volta em texto simples. As duas direções rodam no seu navegador, e a entrada decodificada nunca é renderizada como HTML ativo.

Modo
Estilo da entidade
Escapar

0 caracteres · 0 palavras · 0 linhas

0 caracteres · 0 palavras · 0 linhas

Funciona inteiramente nesta aba do navegador. Seu texto nunca é enviado nem armazenado.

Caracteres comuns e suas entidades

As formas nomeada, decimal e hexadecimal decodificam para o mesmo caractere. O codificador conhece 216 entidades nomeadas comuns; o decodificador entende todas as referências nomeadas do padrão HTML.

CaractereNomeadaDecimalHex
&&&&
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
"&quot;&#34;&#x22;
'&apos;&#39;&#x27;
(espaço inseparável)&nbsp;&#160;&#xA0;
©&copy;&#169;&#xA9;
®&reg;&#174;&#xAE;
™&trade;&#8482;&#x2122;
€&euro;&#8364;&#x20AC;
£&pound;&#163;&#xA3;
¥&yen;&#165;&#xA5;
—&mdash;&#8212;&#x2014;
–&ndash;&#8211;&#x2013;
…&hellip;&#8230;&#x2026;
«&laquo;&#171;&#xAB;
»&raquo;&#187;&#xBB;
°&deg;&#176;&#xB0;
×&times;&#215;&#xD7;
÷&divide;&#247;&#xF7;
é&eacute;&#233;&#xE9;
π&pi;&#960;&#x3C0;
→&rarr;&#8594;&#x2192;
😀—&#128512;&#x1F600;

De 252 entidades no HTML 4 para 2.231 no HTML5

Uma referência de caractere é uma forma de escrever um caractere usando apenas ASCII. As referências numéricas funcionam para qualquer ponto de código Unicode, em decimal (&#233;) ou hexadecimal (&#xE9;). As referências nomeadas são mais fáceis de lembrar: o HTML 4 definiu 252 delas, cobrindo letras do Latin-1 como &eacute;, letras gregas, símbolos matemáticos e marcas tipográficas como &mdash; e &hellip;. Curiosamente, &apos; não estava entre elas; veio do XML e só passou a ser válida em HTML com o HTML5.

O HTML5 ampliou a lista para 2.231 referências de caracteres nomeadas, incorporando o conjunto de entidades do MathML, de modo que nomes como &check;, &bigstar; e &NotEqualTilde; agora funcionam em todos os navegadores atuais. A contagem inclui grafias antigas sem o ponto e vírgula final, como &amp e &copy, que os parsers ainda aceitam por compatibilidade, mas que você não deve escrever. O codificador daqui gera os nomes do HTML 4, que têm amplo suporte, mais &apos;, e recorre a uma referência numérica para todo o resto; o decodificador entrega o texto ao parser do próprio navegador, então entende todos os 2.231 nomes.

O que escapar e quando o escape não basta

Apenas & < > " ' é a configuração para o trabalho do dia a dia: escapa os cinco caracteres que podem encerrar um nó de texto ou um atributo entre aspas, o que basta para exibir um exemplo de código em uma página ou colocar texto de usuário com segurança dentro do HTML. Também todos os caracteres não ASCII transforma é, € e emojis em referências também, para os raros canais que não suportam UTF-8, como alguns modelos de e-mail antigos ou sistemas que corrompem codificações. Nomeada, Decimal e Hex só mudam a forma de escrever a referência; as três são decodificadas para o mesmo caractere. Uma página salva em UTF-8 não precisa de entidades para letras acentuadas.

O escape protege apenas o contexto HTML e nada além disso. Texto inserido em um bloco de script, em um manipulador de evento inline como onclick, em um atributo style ou em um href que possa começar com javascript: exige tratamento diferente, e a codificação de entidades sozinha não evita cross-site scripting nesses casos. Frameworks como o React escapam o texto por padrão, então o escape duplo é o bug mais comum em aplicativos modernos: os usuários veem &amp; onde deveria haver um e comercial. Para remover as tags por completo, converta a marcação com HTML para TXT; para escapar dentro de URLs, use Codificar e decodificar URL.

Perguntas frequentes

Quais caracteres precisam ser escapados em HTML?
No texto, & e < são os essenciais, e > é escapado por convenção. Dentro do valor de um atributo, escape também a aspa que o delimita. Escapar os cinco cobre os dois casos.
Qual é a diferença entre &nbsp; e um espaço normal?
&nbsp; é o espaço sem quebra, U+00A0. Parece um espaço, mas impede a quebra de linha naquele ponto e não é colapsado quando vários aparecem juntos, ao contrário dos espaços comuns em HTML.
Por que minha página mostra &amp; em vez do E comercial?
O texto foi escapado duas vezes: uma nos seus dados e outra pelo seu template ou framework. Guarde o texto bruto e deixe uma só camada, em geral o template, fazer o escape na hora da saída.
É seguro decodificar aqui um HTML de origem não confiável?
Sim. O decodificador interpreta a entrada como conteúdo de texto simples, então tags não são criadas, scripts não são executados e imagens não são carregadas. Apenas as referências de entidade são transformadas em caracteres.
É melhor usar entidades nomeadas ou numéricas?
As nomeadas são mais fáceis de ler; as numéricas funcionam para qualquer caractere e em qualquer parser XML. Em XML sem DTD, apenas &amp;, &lt;, &gt;, &quot; e &apos; são predefinidas.