UltKit

Codificatore e decodificatore di entità HTML

Converte in entità i caratteri che l'HTML interpreta come markup, e se serve anche tutti i caratteri non ASCII, oppure riporta a testo semplice entità come é e —. Entrambe le operazioni avvengono nel browser e il testo decodificato non viene mai visualizzato come HTML attivo.

Modalità
Stile delle entità
Escape

0 caratteri · 0 parole · 0 righe

0 caratteri · 0 parole · 0 righe

Funziona interamente in questa scheda del browser. Il testo non viene mai caricato né salvato.

Caratteri comuni e relative entità

Le forme con nome, decimale ed esadecimale si decodificano nello stesso carattere. Il codificatore conosce 216 entità con nome comuni; il decodificatore comprende tutti i riferimenti con nome dello standard HTML.

CarattereCon nomeDecimaleEsadecimale
&&&&
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
"&quot;&#34;&#x22;
'&apos;&#39;&#x27;
(spazio unificatore)&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;

Dalle 252 entità di HTML 4 alle 2.231 di HTML5

Un riferimento a carattere è un modo per scrivere un carattere usando solo ASCII. I riferimenti numerici funzionano per qualsiasi punto di codice Unicode, in decimale (&#233;) o esadecimale (&#xE9;). I riferimenti con nome sono più facili da ricordare: HTML 4 ne definiva 252, che coprono le lettere Latin-1 come &eacute;, le lettere greche, i simboli matematici e i segni tipografici come &mdash; e &hellip;. Curiosamente &apos; non era tra questi: proviene da XML ed è diventato valido in HTML solo con HTML5.

HTML5 ha ampliato l'elenco a 2.231 riferimenti a carattere con nome, assorbendo il set di entità MathML, quindi nomi come &check;, &bigstar; e &NotEqualTilde; oggi funzionano in tutti i browser attuali. Il conteggio include le grafie legacy senza il punto e virgola finale, come &amp e &copy, che i parser accettano ancora per compatibilità ma che è meglio non scrivere. Il codificatore qui produce i nomi HTML 4, ampiamente supportati, più &apos;, e usa un riferimento numerico per tutto il resto; il decodificatore passa il testo al parser del browser, quindi comprende tutti i 2.231 nomi.

Cosa convertire in entità e quando l'escape non basta

Solo & < > " ' è l'impostazione per l'uso quotidiano: esegue l'escape dei cinque caratteri che possono chiudere un nodo di testo o un attributo tra virgolette, il che basta per mostrare un esempio di codice in una pagina o inserire in sicurezza il testo degli utenti nell'HTML. Anche ogni carattere non ASCII trasforma in riferimenti anche é, € ed emoji, per i rari canali che non supportano UTF-8, come alcuni template email datati o sistemi che alterano le codifiche. Nome, Decimale ed Esadecimale cambiano solo il modo in cui si scrive un riferimento; tutti e tre si decodificano nello stesso carattere. Una pagina salvata in UTF-8 non richiede entità per le lettere accentate.

L'escape protegge solo il contesto HTML. Il testo inserito in un blocco script, in un gestore di eventi inline come onclick, in un attributo style o in un href che potrebbe iniziare con javascript: richiede un trattamento diverso, e la sola codifica delle entità non previene il cross-site scripting in questi casi. Framework come React eseguono l'escape del testo per impostazione predefinita, quindi il doppio escape è il bug più comune nelle app moderne: gli utenti vedono &amp; dove dovrebbe esserci una e commerciale. Per rimuovere del tutto i tag, converti il markup con HTML in TXT; per l'escape negli URL usa Codifica e decodifica URL.

Domande frequenti

Quali caratteri vanno convertiti in entità in HTML?
Nel testo, & e < sono i caratteri essenziali, mentre > viene sottoposto a escape per convenzione. Nel valore di un attributo bisogna fare l'escape anche delle virgolette che lo delimitano. Eseguire l'escape di tutti e cinque copre entrambi i casi.
Che differenza c'è tra &nbsp; e uno spazio normale?
&nbsp; è lo spazio non separabile, U+00A0. Sembra uno spazio, ma impedisce l'a capo in quel punto e, a differenza dei normali spazi in HTML, non viene compresso quando ne compaiono più di uno di seguito.
Perché la pagina mostra &amp; invece della «e commerciale»?
Il testo ha subito l'escape due volte: una nei dati e un'altra da parte del template o del framework. Conserva il testo grezzo e lascia che sia un solo livello, di solito il template, a eseguire l'escape in fase di output.
È sicuro decodificare qui HTML da una fonte non attendibile?
Sì. Il decodificatore analizza l'input come semplice contenuto testuale, quindi i tag non vengono creati, gli script non vengono eseguiti e le immagini non vengono caricate. Solo i riferimenti a entità vengono trasformati in caratteri.
Meglio le entità con nome o quelle numeriche?
Quelle con nome sono più leggibili, quelle numeriche funzionano per ogni carattere e in qualsiasi parser XML. In XML senza DTD sono predefinite solo &amp;, &lt;, &gt;, &quot; e &apos;.