Come si usa
- Scegli Codifica per rendere il testo sicuro per HTML oppure Decodifica per convertire le entità in caratteri.
- Durante la codifica, scegli se mantenere inalterate le lettere accentate e i simboli o convertirli in entità.
- Scrivi o incolla il testo: il risultato si aggiorna subito.
- 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: < per <, > per >, & per &, " per " e ' per '. L’apostrofo usa la forma numerica perché ' 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 é quando esiste un nome comune (con un riferimento numerico come alternativa per tutti gli altri caratteri) oppure riferimenti numerici come é 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, ' e circa 30 nomi comuni di HTML5, oltre ai riferimenti decimali ed esadecimali. I riferimenti numerici seguono le regole di HTML5: �, 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 – diventa un trattino en. Come fanno i browser, vengono accettati senza punto e virgola finale anche alcuni nomi legacy, come & e ©. 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 <div class="box">. 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é – 5 €, 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 & Chips – £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 ©, sono più facili da leggere, ma esistono solo per un insieme limitato di caratteri. I riferimenti numerici, come © (decimale) o © (esadecimale), funzionano con tutti i caratteri Unicode, comprese le emoji.
Perché viene decodificato in un carattere che sembra uno spazio?
è 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.