Também disponível em: English · Español · Français · العربية
Codificador e descodificador de entidades HTML
Converte texto em referências HTML e volta a texto normal, em tempo real e sem sair do navegador.
O que são as entidades HTML?
Uma entidade HTML é a forma de escrever um carácter que, de outro modo, seria interpretado como parte da marcação — o e comercial, os sinais de maior e menor que ou as aspas — para que apareça como texto normal em vez de abrir ou fechar uma etiqueta. Codificar HTML substitui esse carácter por uma referência (uma sequência com nome ou um número); descodificar entidades HTML faz o caminho inverso, devolvendo o carácter original a partir dessa referência.
Precisas de codificar sempre que um texto que não controlas — o comentário de um utilizador, um nome de produto, um campo de formulário — vai parar ao meio de uma página HTML. Sem isso, alguém que escreva por acaso um sinal de menor que fecha uma etiqueta ou, pior, injeta uma nova. A mesma necessidade aparece ao mostrar exemplos de código numa página, onde o próprio código teria de ser escapado para não ser interpretado, e ao colar texto vindo de um gestor de conteúdos que às vezes devolve símbolos trocados ou em falta — descodificar mostra exatamente que carácter estava ali escondido.
Como usar a ferramenta
- Escolhe a direção. Muda entre Codificar e Descodificar consoante tenhas texto simples para proteger ou uma cadeia com referências para converter de volta.
- Cola ou escreve o texto. O resultado aparece no painel da direita à medida que escreves, sem qualquer botão para carregar ficheiros.
- Ajusta as opções e copia. Ao codificar, escolhe o destino do texto e as opções de escape; ao descodificar, repara no aviso se o resultado contiver uma etiqueta, e copia o resultado com um clique.
Codificar: a resposta pequena e exata
Codificar tem uma resposta pequena e exata: só cinco caracteres alguma vez precisam de ser escapados em HTML — o e comercial, os dois sinais de maior e menor que, e os dois tipos de aspas. Quais deles precisas mesmo depende de onde o texto vai parar. No texto de um elemento bastam o e comercial e o sinal de menor que; dentro de um atributo delimitado por aspas bastam o e comercial e essas aspas. Escapar os cinco é o superconjunto seguro, e é por isso que esta ferramenta o usa por omissão — uma cadeia escrita para o texto de um elemento acaba muitas vezes, mais tarde, dentro de um atributo.
Há aqui uma armadilha real, que os próprios testes desta ferramenta encontraram. Escapar para um valor de atributo deixa os sinais de maior e menor que intactos, porque são legais dentro de um atributo entre aspas — mas isso significa que a cadeia escapada continua a conter uma etiqueta viva. Codifica em modo «Valor de atributo» uma etiqueta de negrito à volta da palavra «olá» e a saída continua com essa etiqueta lá dentro; entrega-a a qualquer coisa que interprete HTML e ela volta a mostrar apenas «olá», com a marcação engolida em silêncio. Correto para o fim a que se destina, perigoso em qualquer outro lado — mais uma razão para «Qualquer um» ser a opção segura por omissão.
Um pormenor menos óbvio da codificação: o escape percorre caracteres inteiros, não as unidades de duas partes em que o JavaScript os guarda internamente. Por isso um emoji torna-se uma única referência numérica, e não duas metades soltas que nenhum analisador voltaria a juntar.
Descodificar: porque confiamos no navegador
Descodificar tem uma resposta muito maior, e o navegador já a tem escrita. A norma HTML define 2231 referências de carácter com nome. Enviar essa tabela a cada visitante significaria voltar a enviá-la de cada vez que mudasse, por isso esta ferramenta usa o próprio analisador de HTML do navegador — por definição, a mesma implementação que decide o que uma página real mostra, e sem qualquer custo de descarregamento.
Essa escolha traz três comportamentos que um descodificador escrito à mão costuma errar, e nenhum deles é uma esquisitice: estão na própria especificação. As referências numéricas entre 80 e 9F em hexadecimal são remapeadas — a referência do número 128 não produz o carácter desse ponto de código, mas o símbolo do euro, porque esses números foram, historicamente, bytes do Windows-1252, e um descodificador escrito da forma óbvia produzia ali um carácter de controlo invisível sem avisar de nada. Uma lista fixa de referências com nome herdadas do passado funciona mesmo sem o ponto e vírgula final, por compatibilidade, enquanto a maioria exige esse ponto e vírgula — é por isso que a referência curta do e comercial se descodifica mesmo terminando sem ele, e é por isso que o próprio exemplo da norma, «not» seguido de «it» e ponto e vírgula, se descodifica como um sinal de negação seguido, à letra, das letras i, t e do ponto e vírgula, e não como algo que contenha a palavra «not». E um nome que a norma não define fica exatamente como foi escrito, em vez de ser adivinhado.
Descodificar é a direção perigosa, e vale a pena dizê-lo sem rodeios: o escape existia precisamente para impedir que uma etiqueta fosse uma etiqueta, e descodificar devolve-lha. Por isso esta página mostra sempre o resultado como texto simples e nunca o interpreta como HTML, e avisa-te sempre que o resultado descodificado contiver uma etiqueta — trata-o como não confiável em qualquer sítio para onde o levares a seguir.
Porque é gratuito?
Codificar e descodificar entidades HTML não pede nada ao servidor: o próprio navegador já sabe fazer as duas coisas, e esta ferramenta só lhe pede a resposta em vez de a recalcular sozinha. Por isso corre inteiramente no teu ecrã, sem conta, sem marca de água e sem limite de utilizações — nada do que escreves ou colas aqui sai do teu computador.