MiServe DevTools

I tuoi adesivi

Fissa qui gli strumenti. Restano salvati in questo browser.

Codifica e decodifica entità HTML

Fai l'escape del testo per HTML con riferimenti a carattere con nome o numerici, e riconverti in caratteri i riferimenti come &, é e é.

Funziona nel tuo browser. Nulla di ciò che incolli viene caricato.

Informazioni su questo strumento

Che cos'è un'entità HTML

Un riferimento a carattere HTML, di solito chiamato entità, scrive un carattere usando solo ASCII semplice. Ha tre forme: un nome, come in é; un code point decimale, come in é; e un code point esadecimale, come in é. Tutte e tre producono la stessa é.

Cinque caratteri sono i più importanti. Nel testo si fa l'escape di & e <, perché possono aprire un riferimento e un tag. Le virgolette che delimitano il valore di un attributo vanno sottoposte a escape al suo interno. Per > l'escape si fa per convenzione. Solo riservati codifica esattamente questi cinque: & < > " '.

Nomi, numeri e dove funzionano

HTML 4 definiva 252 nomi, e lo standard HTML attuale ne definisce 2.125. XML di per sé ne predefinisce solo cinque: amp, lt, gt, quot e apos. Qualsiasi altro nome funziona in un documento XML, come un file SVG o un feed RSS, solo se una DTD lo dichiara. I riferimenti numerici funzionano sia in HTML sia in XML, quindi scegli l'output numerico quando il testo potrebbe finire in XML.

Questo strumento scrive l'apostrofo come riferimento numerico, &#39; o &#x27;, perché &apos; non fa parte di HTML 4. Una pagina servita in UTF-8 non ha alcun bisogno di codificare lettere accentate o emoji; Tutti i non ASCII serve nei casi in cui il testo deve attraversare un canale che trasporta solo ASCII.

C'è un gruppo di caratteri che non si può scrivere come riferimento. HTML legge un riferimento numerico da 128 a 159 come il carattere Windows-1252 in quella posizione, se esiste, quindi &#133; sono i puntini di sospensione e non il carattere di controllo U+0085. L'encoder lascia invariati quei caratteri di controllo e te lo segnala quando succede.

Come funziona qui la decodifica

Il decoder applica le regole che lo standard HTML stabilisce per il testo. I riferimenti numerici sono accettati con o senza il punto e virgola finale. Un numero da 128 a 159 viene letto come il carattere Windows-1252 in quella posizione, se quella codifica ne ha uno (quindi &#150; è un trattino medio, o en dash), mentre zero, surrogati e numeri oltre U+10FFFF diventano U+FFFD e vengono elencati sotto il risultato. I nomi richiedono il punto e virgola, tranne i 106 nomi più vecchi come &copy e &nbsp che i browser accettano ancora senza.

I nomi distinguono tra maiuscole e minuscole e vengono cercati in una copia integrata della tabella dello standard. Ciò che sembra un riferimento ma non corrisponde a nessun nome viene lasciato com'è ed elencato sotto il risultato. All'interno del valore di un attributo lo standard lascia non decodificati alcuni riferimenti senza punto e virgola; questo strumento applica sempre le regole per il testo. Il tuo input non viene mai passato al parser HTML del browser, quindi nulla di ciò che incolli viene renderizzato o eseguito.

Domande

Di quali caratteri devo fare l'escape in HTML?

Nel testo, del segno di minore e della e commerciale ovunque possa essere letta come l'inizio di un riferimento a carattere. Fare l'escape di ogni e commerciale è il modo più semplice per rispettare questa regola. All'interno del valore di un attributo, fai l'escape anche delle virgolette che lo racchiudono. L'escape del segno di maggiore non è obbligatorio, ma è comune e innocuo.

L'escape delle entità HTML basta a prevenire il cross-site scripting?

Solo dove il valore finisce nel testo HTML o in un attributo tra virgolette. Un valore inserito in un blocco script, in un URL, in uno stile o in un gestore di eventi richiede invece le regole di escape di quel contesto.

Che differenza c'è tra uno spazio unificatore (nbsp) e uno spazio normale?

Lo spazio unificatore è il carattere U+00A0, e nbsp è il suo nome come riferimento a carattere. Il browser non va a capo in quel punto e non ne fonde diversi in uno solo, come invece fa con una sequenza di spazi normali.

Perché un riferimento non è stato decodificato?

Un nome che lo standard HTML non definisce non è un riferimento a carattere, quindi il browser lo mostra così com'è scritto, e questo strumento lo lascia invariato e lo elenca. Controlla l'ortografia e le maiuscole, perché i nomi distinguono tra maiuscole e minuscole: Eacute ed eacute sono caratteri diversi. Controlla anche il punto e virgola, di cui possono fare a meno solo 106 nomi più vecchi.

Altri strumenti in Codifica