Perché un testo mostra «&» e come correggerlo
Pubblicata il · Aggiornata il 3 min di lettura
Avrete probabilmente visto un testo mostrare «Tom & Jerry» invece di «Tom & Jerry» su un sito, in un'e-mail o in una scheda prodotto. Non è un guasto: un'entità HTML è stata codificata una volta di troppo. Questa guida spiega da dove viene il problema e come correggerlo.
Che cos'è un'entità HTML
Nel codice di una pagina web, alcuni caratteri hanno un ruolo speciale: la «&» avvia un'entità, i segni «<» e «>» racchiudono i tag. Per visualizzare questi caratteri così come sono, vengono sostituiti da una sequenza di segni chiamata entità. Cinque sono comuni.
| Carattere | Entità |
|---|---|
| & | & |
| < | < |
| > | > |
| " | " |
| ' (apostrofo dritto) | ' |
Da dove viene la doppia codifica
Un testo a volte passa per due sistemi che codificano entrambi: un editor, poi un modello di pagina. Ogni passaggio trasforma la «&» dell'entità precedente. Con Codificare e decodificare entità HTML, codificare «Tom & Jerry» dà «Tom & Jerry», e codificare questo risultato dà «Tom &amp; Jerry».
| Passaggio | Testo ottenuto |
|---|---|
| Testo originale | Tom & Jerry |
| Codificato una volta | Tom & Jerry |
| Codificato due volte | Tom &amp; Jerry |
Il browser decodifica un livello alla visualizzazione. Un testo codificato due volte appare quindi con «&» invece di «&».
Decodificare un livello alla volta
Lo strumento toglie un solo livello di entità per passaggio. Se il risultato contiene ancora entità, la modalità «Entrambi» lo segnala e rilanciate la decodifica sul risultato.
| Testo | Prima decodifica | Seconda decodifica |
|---|---|---|
| Tom &amp; Jerry | Tom & Jerry | Tom & Jerry |
| &lt;b&gt;gras&lt;/b&gt; | <b>gras</b> | <b>gras</b> |
Decodificare un solo livello evita di disfare una codifica voluta: un esempio di codice che deve mostrare «&» a schermo si scrive «&amp;» nella pagina.
Accenti e simboli
La decodifica comprende tutte le entità con nome che terminano con un punto e virgola, non solo le cinque usuali. «café à 5 € © 2026» dà «café à 5 € © 2026», e lo spazio non separabile diventa un vero spazio non separabile. Anche le entità numeriche vengono decodificate: «été» dà «été», e «😀» come «😀» danno la stessa emoji.
Che cosa lo strumento lascia intatto
- Un'entità sconosciuta come «&inconnue;» viene lasciata com'è.
- Un'entità senza punto e virgola finale, come «&» o «<» in una frase, non viene toccata.
- Un indirizzo con parametri, come «https://exemple.fr/?a=1¶m=2©=4», resta esatto: «¶m» e «©» non vengono scambiati per entità.
Codificare un codice per mostrarlo
Per mostrare un frammento di codice in una pagina, codificatelo una volta. Il testo «<a href="x">l’été & plus</a>» dà «<a href="x">l'été & plus</a>». Le lettere accentate non vengono codificate, solo i cinque caratteri riservati.
Evitare il problema
Codificate una sola volta, all'ultimo momento, quando il testo viene scritto nella pagina. Per sostituire in blocco i resti di una cattiva codifica, va bene Trovare e sostituire. Gli indirizzi web seguono un'altra codifica, spiegata in Base64, impronta e indirizzo codificato, non confonderli.
Dove compare il problema
In una scheda prodotto, un titolo di pagina, un'e-mail automatica o un campo importato da un altro sito: una «&» diventa «&» quando il testo viene codificato due volte.
Verificare il risultato
- Rilanciate la decodifica finché lo strumento segnala entità rimaste.
- Confrontate con il testo originale a schermo.
- Verificate gli spazi non separabili e le emoji.
Domande frequenti
- Perché il mio testo mostra «&»?
- Un'entità HTML è stata codificata una volta di troppo. Il browser decodifica un livello alla visualizzazione, il secondo resta visibile.
- Come si corregge?
- Decodificate un livello alla volta con lo strumento, finché non segnala più entità.
- Lo strumento decodifica gli accenti?
- Sì, tutte le entità con nome che terminano con un punto e virgola, e le entità numeriche.
- Come si evita il problema?
- Codificate una sola volta, all'ultimo momento, quando il testo viene scritto nella pagina.
