tigtools

Codificatore/decodificatore di entità HTML

Rendi il testo sicuro da inserire in HTML oppure converti entità come & e é nei caratteri corrispondenti.

Funziona nel browser Nessuna registrazione

Direzione

& < > " e ' vengono sempre sottoposti a escape. Gli altri caratteri vengono convertiti solo se scegli un’opzione per i caratteri non ASCII.

Come si usa

  1. Scegli Codifica per rendere il testo sicuro per HTML oppure Decodifica per convertire le entità in caratteri.
  2. Durante la codifica, scegli se mantenere inalterate le lettere accentate e i simboli o convertirli in entità.
  3. Scrivi o incolla il testo: il risultato si aggiorna subito.
  4. Copia il risultato oppure usa «Usa il risultato come input» per verificare che venga decodificato nel testo originale.

Come funziona

In HTML, alcuni caratteri hanno un significato speciale: < apre un tag, & avvia un’entità e " o ' chiudono il valore di un attributo. Per visualizzarli come testo, bisogna scriverli come riferimenti a caratteri: &lt; per <, &gt; per >, &amp; per &, &quot; per " e &#39; per '. L’apostrofo usa la forma numerica perché &apos; non è definito in HTML 4.

Tutti gli altri caratteri, comprese le lettere accentate, il testo cinese e le emoji, possono essere inseriti direttamente se la pagina viene salvata e servita in UTF-8, la codifica predefinita dei siti moderni. La conversione in entità serve solo per i sistemi che non supportano UTF-8, come alcuni vecchi modelli di email o database. In questi casi, puoi scegliere entità con nome come &eacute; quando esiste un nome comune (con un riferimento numerico come alternativa per tutti gli altri caratteri) oppure riferimenti numerici come &#xE9; per ogni carattere.

La decodifica non usa il parser HTML del browser. Usa una tabella integrata con tutte le 252 entità con nome di HTML 4.01, &apos; e circa 30 nomi comuni di HTML5, oltre ai riferimenti decimali ed esadecimali. I riferimenti numerici seguono le regole di HTML5: &#0;, i valori surrogati e quelli superiori a U+10FFFF diventano il carattere sostitutivo �, mentre i valori da 128 a 159 vengono interpretati come Windows-1252, quindi &#150; diventa un trattino en. Come fanno i browser, vengono accettati senza punto e virgola finale anche alcuni nomi legacy, come &amp e &copy. HTML5 definisce oltre 2.000 nomi; quelli meno comuni che non sono inclusi nella tabella vengono lasciati invariati e segnalati.

Eseguire l’escaping del testo prima di inserirlo nell’HTML è un’importante misura di difesa contro il cross-site scripting (XSS), ma è corretto solo per il contenuto degli elementi e i valori degli attributi tra virgolette. Il testo inserito in un blocco <script>, in un attributo style o in un URL richiede un escaping diverso.

Esempi

Mostrare codice in una pagina web

Per visualizzare <div class="box"> come testo in un post del blog, convertilo in &lt;div class=&quot;box&quot;&gt;. Il browser mostra il tag originale invece di creare un elemento.

Preparare il testo per un vecchio modello di email

Con l’opzione “Entità con nome, se disponibili”, “Café – 5 €” diventa Caf&eacute; &ndash; 5 &euro;, che viene visualizzato correttamente anche se l’email viene inviata con una codifica di caratteri diversa da UTF-8.

Ripulire il testo estratto o esportato

Un’esportazione da un CMS contiene Fish &amp; Chips &#8211; &pound;9. La decodifica restituisce Fish & Chips – £9, pronto da copiare in un foglio di calcolo.

Domande frequenti

Quali caratteri devono essere sottoposti a escape in HTML?

Nel contenuto degli elementi, è necessario fare l’escape di & e < (è consigliato anche per >). Nei valori degli attributi, occorre fare l’escape anche del carattere di virgolette che delimita il valore. Fare l’escape di tutti e cinque (& < > " ') ovunque è la regola semplice e sicura adottata da questo strumento.

Qual è la differenza tra entità con nome e riferimenti numerici?

Le entità con nome, come &copy;, sono più facili da leggere, ma esistono solo per un insieme limitato di caratteri. I riferimenti numerici, come &#169; (decimale) o &#xA9; (esadecimale), funzionano con tutti i caratteri Unicode, comprese le emoji.

Perché &nbsp; viene decodificato in un carattere che sembra uno spazio?

&nbsp; è uno spazio unificatore (U+00A0). Ha l’aspetto di uno spazio normale, ma impedisce l’interruzione di riga e HTML non lo comprime. È un carattere diverso dallo spazio normale, cosa importante quando si confronta o si cerca del testo.

Devo codificare le lettere accentate come é?

Non se la pagina usa UTF-8 (<meta charset="utf-8">), come accade per quasi tutte le pagine moderne. Lascia l’impostazione predefinita: verranno sottoposti a escape solo i cinque caratteri speciali.

La codifica basta a prevenire gli attacchi XSS?

È sufficiente per il testo non attendibile inserito nel contenuto di un elemento HTML o nei valori di attributi racchiusi tra virgolette. Non basta per il codice JavaScript, CSS, gli attributi senza virgolette o URL come href="javascript:…", che richiedono una gestione specifica per il contesto.

Privacy

La codifica e la decodifica avvengono nel browser con semplici operazioni sulle stringhe; il testo non viene mai interpretato come HTML, caricato, archiviato o incluso nelle statistiche.