Quando codificare
Solo cinque caratteri hanno un significato nel testo e negli attributi HTML: & inizia un’entità, < e > delimitano i tag, e " e ' chiudono i valori degli attributi. Fai l’escape di questi ogni volta che inserisci testo non fidato in una pagina, e sei al sicuro dall’iniezione di markup (XSS in contesto HTML). Tutto il resto, comprese lettere accentate, emoji e simboli, può essere scritto letteralmente in un documento UTF-8; codificarle come é è un’abitudine dell’era Latin-1 e rende il sorgente più difficile da leggere.
Tre modi di scrivere un carattere
| Forma | Esempio | Note |
|---|---|---|
| Con nome | é → | 2.125 nomi in HTML5; leggibili, ma solo i cinque di base funzionano in XML senza DTD. |
| Decimale | é | Funziona ovunque, compresi XML e SVG. |
| Hex | é | Corrisponde alla notazione dei code point Unicode U+00E9; anch’essa universale. |
Trappole
è un carattere vero (U+00A0). Sopravvive al copia-incolla come spazio unificatore invisibile e rompe i confronti tra stringhe; l’ispettore Unicode lo trova.- I browser accettano alcune entità legacy senza il punto e virgola (
©,&), quindi un URL come?a=1©=2in un attributo non codificato diventa?a=1©=2. Negli attributi scrivi sempre&. - La doppia codifica (
&lt;) appare nella pagina come<letterale; codifica una volta sola, al momento dell’output. - Nelle stringhe JavaScript le entità HTML non vengono decodificate; lì usa
\u00E9, oppure impostatextContente salta del tutto l’escape.
Domande
Cos’è ?
Uno spazio unificatore, U+00A0: uno spazio che impedisce l’a capo e non viene compattato con gli spazi vicini. Usalo tra un numero e la sua unità (10 km) e in nessun altro posto.
Devo codificare i caratteri accentati?
No, se la pagina è servita come UTF-8, come dovrebbe essere ogni pagina moderna. Scrivi é direttamente. Codifica solo quando il file potrebbe essere salvato in un altro charset o quando devi rendere visibile un carattere invisibile nel sorgente.
Quali entità funzionano in XML e SVG?
Solo &, <, >, " e ', più i riferimenti numerici. Le entità con nome come © causano un errore di parsing in XML se non dichiarate.
Come mostro codice HTML in una pagina web?
Codificalo: ogni < diventa <, ogni & diventa &. Incolla il codice nella casella Testo con la prima opzione di codifica e copia l’output HTML in un blocco <pre><code>.