Vai al contenuto principale
🌐 HTML5 / Piattaforma web Standard: WHATWG HTML Living Standard §13.5 Time: 5 min di lettura Revisionato: settembre 2024

Entità di carattere HTML e riferimenti numerici

Una guida pratica per sviluppatori su entità con nome, riferimenti di carattere numerici decimali ed esadecimali e sulle regole moderne di escape in UTF-8.

TL;DR — Risposta diretta

Risposta tecnica diretta

Nei documenti HTML5 moderni in UTF-8 (<meta charset="utf-8">), gli sviluppatori dovrebbero scrivere direttamente i caratteri letterali per tutti i simboli, i testi internazionali e le emoji. I riferimenti di carattere sono strettamente necessari solo per i 5 delimitatori sintattici dell'HTML: &amp; (&), &lt; (<), &gt; (>), &quot; (") e &apos; (').

💡
Regola di produzione: Non convertire il normale testo non ASCII in entità nei documenti UTF-8. Usare &amp;, &lt;, &gt;, &quot; e &apos; per prevenire errori di analisi dell'HTML e vulnerabilità XSS.

Le 5 entità XML/HTML essenziali

Questi caratteri hanno un significato sintattico speciale nei parser HTML e devono essere sottoposti a escape all'interno dei nodi di testo e degli attributi.

&amp;

Obbligatorio per rappresentare una e commerciale che non avvia un riferimento di entità.

&lt;

Obbligatorio nel contenuto testuale per impedire al browser di interpretare l'apertura di un tag.

&gt;

Consigliato nel contenuto testuale per evitare ambiguità con la sintassi di chiusura dei tag.

&quot;

Obbligatorio all'interno dei valori di attributo HTML tra virgolette doppie.

&apos;

Obbligatorio all'interno dei valori di attributo HTML tra virgolette singole.

Le 5 regole essenziali di escape con entità HTML

HTML html-escaping.html
<!-- 1. The 5 mandatory HTML syntax delimiter escapes -->
<p>Tom &amp; Jerry</p>          <!-- & becomes &amp; -->
<p>5 &lt; 10</p>                 <!-- < becomes &lt; -->
<p>10 &gt; 5</p>                 <!-- > becomes &gt; -->
<input value="&quot;Hello&quot;">  <!-- " inside attribute becomes &quot; -->
<input value='&apos;World&apos;'>  <!-- ' inside attribute becomes &apos; -->

<!-- 2. Characters in UTF-8 DO NOT need escaping! -->
<p>© 2024 CopyCharacter • All Rights Reserved → Ready 🔥</p>
Output del programma
Tom & Jerry
5 < 10
10 > 5
"Hello"
'World'
© 2024 CopyCharacter • All Rights Reserved → Ready 🔥

Errori comuni vs modelli di produzione

Scopri quali modelli falliscono in produzione e le alternative moderne conformi agli standard.

Effettuare l'escape dei caratteri non ASCII in HTML5

Markup web moderno con codifica UTF-8.
DA EVITARE: ❌ Trasformare ogni carattere in entità legacy
<p>&copy; 2024 &bull; All Rights Reserved &rarr; &eacute;</p>
Perché fallisce: Aumenta le dimensioni dell'HTML, rende il codice sorgente illeggibile e non ricercabile, ed è superfluo nei documenti UTF-8.
CONSIGLIATO: ✅ Caratteri UTF-8 diretti
<p>© 2024 • All Rights Reserved → é</p>
Perché è migliore: Pulito, leggibile, ricercabile e ottimale per compressione e SEO.

Matrice dei casi limite e invarianti

Una matrice di test diversificata che confronta il comportamento dei caratteri tra ASCII, segni combinanti, emoji, bandiere e frammenti surrogati.

Caso di test Glifo di input Unità di codice Punti di codice Grafemi Categoria Spiegazione tecnica
E commerciale nella query string <a href="/search?q=1&v=2"> Standard Una & senza escape negli attributi URL può essere interpretata erroneamente dai parser HTML come un'entità con nome non valida.

Standard e provenienza delle fonti

Tutti gli invarianti tecnici, le API e i comportamenti di questa guida sono verificati rispetto alle specifiche primarie ufficiali.

WHATWG

WHATWG HTML Living Standard

Clausola: §13.5 Named Character References

W3C

W3C HTML5 Specification

Clausola: §8.1.4 Character References