MiServe DevTools

Os seus autocolantes

Fixe aqui as ferramentas. Ficam guardadas neste navegador.

Codificador / descodificador de entidades HTML

Escape texto para HTML com referências de caracteres nomeadas ou numéricas, e converta referências como &, é e é de volta em caracteres.

Funciona no seu navegador. Nada do que cola é enviado.

Sobre esta ferramenta

O que é uma entidade HTML

Uma referência de carácter HTML, normalmente chamada entidade, escreve um carácter usando apenas ASCII simples. Existe em três formas: um nome, como em é; um ponto de código decimal, como em é; e um ponto de código hexadecimal, como em é. As três produzem o mesmo é.

Há cinco caracteres que importam mais. & e < são escapados no texto, porque podem iniciar uma referência e uma tag. O carácter de aspas que delimita o valor de um atributo tem de ser escapado dentro dele. > é escapado por convenção. Só reservados codifica exatamente estes cinco: & < > " '.

Nomes, números e onde funcionam

O HTML 4 definia 252 nomes, e a norma HTML atual define 2125. O próprio XML só predefine cinco: amp, lt, gt, quot e apos. Qualquer outro nome só funciona num documento XML, como um ficheiro SVG ou um feed RSS, se uma DTD o declarar. As referências numéricas funcionam tanto em HTML como em XML, por isso escolha a saída numérica quando o texto puder acabar em XML.

Esta ferramenta escreve o apóstrofo como referência numérica, &#39; ou &#x27;, porque &apos; não faz parte do HTML 4. Uma página servida em UTF-8 não precisa de codificar as letras acentuadas nem os emojis; Todos os não ASCII serve para os casos em que o texto tem de passar por um canal que só transporta ASCII.

Há um grupo de caracteres que não pode ser escrito como referência. O HTML lê uma referência numérica de 128 a 159 como o carácter Windows-1252 nessa posição, quando existe, por isso &#133; dá reticências e não o carácter de controlo U+0085. O codificador deixa esses caracteres de controlo como estão e avisa quando o faz.

Como funciona aqui a descodificação

O descodificador aplica as regras que a norma HTML define para texto. As referências numéricas são aceites com ou sem o ponto e vírgula final. Um número de 128 a 159 é lido como o carácter Windows-1252 nessa posição, quando essa codificação tem um (por isso &#150; é uma meia-risca), e o zero, os surrogates e os números acima de U+10FFFF passam a U+FFFD e são listados abaixo do resultado. Os nomes precisam do ponto e vírgula, exceto os 106 nomes antigos, como &copy e &nbsp, que os navegadores ainda aceitam sem ele.

Os nomes distinguem maiúsculas de minúsculas e são procurados numa cópia interna da tabela da norma. O que parece uma referência mas não corresponde a nenhum nome fica como está e é listado abaixo do resultado. Dentro do valor de um atributo, a norma deixa por descodificar algumas referências sem ponto e vírgula; esta ferramenta aplica sempre as regras para texto. A sua entrada nunca é passada ao parser HTML do navegador, por isso nada do que cola é renderizado nem executado.

Perguntas

Que caracteres tenho de escapar em HTML?

No texto, o sinal de menor, e o e comercial sempre que possa ser lido como o início de uma referência de carácter. Escapar todos os e comerciais é a forma simples de cumprir essa regra. Dentro do valor de um atributo, escape também as aspas que delimitam o valor. Escapar o sinal de maior não é obrigatório, mas é comum e inofensivo.

Escapar entidades HTML basta para evitar cross-site scripting?

Só quando o valor é colocado em texto HTML ou num atributo entre aspas. Um valor colocado dentro de um bloco de script, de um URL, de um estilo ou de um handler de eventos precisa, em vez disso, das regras de escape desse contexto.

Qual é a diferença entre um espaço inseparável (nbsp) e um espaço normal?

O espaço inseparável é o carácter U+00A0, e nbsp é o seu nome como referência de carácter. Um navegador não quebra a linha nele nem junta vários num só, como faz com uma sequência de espaços normais.

Porque é que uma referência não foi descodificada?

Um nome que a norma HTML não define não é uma referência de carácter, por isso um navegador mostra-o tal como está escrito, e esta ferramenta deixa-o inalterado e lista-o. Verifique a ortografia e as maiúsculas, porque os nomes distinguem maiúsculas de minúsculas: Eacute e eacute são caracteres diferentes. Verifique também o ponto e vírgula, que só 106 nomes antigos dispensam.

Mais ferramentas de Codificação