Codificar e decodificar entidades HTML
Transforme texto em entidades HTML, ou transforme entidades como & e € de volta nos caracteres que elas representam.
Roda no navegador; nada do que você digita sai do seu dispositivo
Cole um texto para começar.
Texto de até alguns milhões de caracteres. A decodificação entende todas as entidades nomeadas que o seu navegador conhece (a lista completa do HTML5) e números decimais e hexadecimais; cada referência precisa do ponto e vírgula final. A decodificação é de um nível só: &lt; vira <, não <.
Como codificar e decodificar entidades HTML
- Escolha Codificar ou Decodificar e cole o seu texto.
- Ao codificar, escolha se quer codificar só os caracteres inseguros, usar nomes como é onde existirem, ou usar números para tudo que estiver fora do ASCII.
- Copie o resultado.
O que são entidades HTML
O HTML dá uma função especial a alguns caracteres: o sinal de menor abre uma tag, o e comercial abre uma entidade e as aspas fecham o valor de um atributo. Para mostrar um desses caracteres como texto, você escreve uma entidade no lugar: < para <, & para &. As entidades também permitem escrever caracteres difíceis de digitar ou que uma codificação de página antiga não consegue guardar, como é para é, € para € ou 😀 para um emoji.
Uma entidade começa com um e comercial e termina com um ponto e vírgula. No meio vem um nome (copy), um número decimal depois de # (#169) ou um número hexadecimal depois de #x (#xA9). Os três escrevem o símbolo de copyright. A codificação percorre o texto um caractere por vez: os cinco caracteres inseguros sempre viram entidades, e o resto depende da opção escolhida, de nada até um número para cada caractere.
A decodificação lê cada referência e a substitui pelo seu caractere. Os números são convertidos diretamente, seguindo as regras do HTML: um número que seja zero, esteja fora do intervalo ou seja um substituto (surrogate) vira o caractere de substituição, e os números de 128 a 159 são lidos como caracteres Windows-1252, como os navegadores fazem. Os nomes são resolvidos pelo seu navegador, que conhece toda a lista do HTML5. A decodificação é feita em uma única passada, então &lt; vira < e não um sinal de menor puro.
Dicas
- Precisa escapar um valor para um endereço web? Use Codificar e decodificar URL.
- Organize a marcação antes de escapá-la com o formatador de HTML.
- Não sabe por que o texto parece estranho? Pode haver caracteres ocultos nele: confira com o detector de caracteres invisíveis.
Perguntas frequentes
Quais caracteres precisam ser escapados em HTML?
Cinco: o sinal de menor < (<), o sinal de maior > (>), o e comercial & (&), as aspas duplas " (") e a aspa simples ' ('). Escapá-los permite mostrar código ou texto digitado por um usuário como texto, sem que seja lido como marcação. A primeira opção, Só os caracteres inseguros, faz exatamente isso.
Qual é a diferença entre entidades nomeadas e numéricas?
Uma entidade nomeada usa uma palavra curta, como é para é ou € para €. Uma numérica usa o ponto de código Unicode, em decimal (é) ou hexadecimal (é). As duas resultam no mesmo caractere. Só alguns caracteres têm nome; os demais precisam de números.
Por que codificar caracteres fora do ASCII?
Se uma página ou um e-mail não é entregue como UTF-8, letras acentuadas e símbolos podem virar lixo. As entidades são ASCII puro, então sobrevivem a qualquer codificação.
A decodificação cobre todas as entidades?
Sim. Referências decimais e hexadecimais são convertidas diretamente, e os nomes são consultados pelo próprio analisador HTML do navegador, que conhece a lista completa do HTML5 com mais de dois mil nomes. Uma referência sem o ponto e vírgula é deixada como está, e o mesmo vale para um nome desconhecido, que aparece numa lista para você ver.
Codificar basta para evitar XSS?
Codificar os cinco caracteres inseguros é a correção certa quando você coloca texto no conteúdo de um elemento HTML ou em um valor de atributo entre aspas. Não basta dentro de um script, de um style, de um atributo sem aspas ou de uma URL, que exigem o próprio escape. Esta ferramenta serve para texto que você cola, e não substitui o escape do seu framework.
Meu texto é enviado para algum lugar?
Não. Tudo acontece no seu navegador e nada sai do seu dispositivo.