Pourquoi un texte affiche « & » et comment le corriger
Publié le · Mis à jour le 3 min de lecture
Vous avez déjà vu un texte afficher « Tom & Jerry » au lieu de « Tom & Jerry » sur un site, dans un courriel ou dans une fiche produit. Ce n’est pas une panne : une entité HTML a été encodée une fois de trop. Ce guide explique d’où vient le problème et comment le corriger.
Ce qu’est une entité HTML
Dans le code d’une page web, certains caractères ont un rôle particulier : le « & » commence une entité, les signes « < » et « > » entourent les balises. Pour afficher ces caractères tels quels, on les remplace par une suite de signes appelée entité. Cinq sont courantes.
| Caractère | Entité |
|---|---|
| & | & |
| < | < |
| > | > |
| " | " |
| ’ (apostrophe droite) | ' |
D’où vient le double encodage
Un texte traverse parfois deux systèmes qui encodent chacun : un éditeur, puis un modèle de page. Chaque passage transforme le « & » de l’entité précédente. Avec Encoder/décoder les entités HTML, l’encodage de « Tom & Jerry » donne « Tom & Jerry », puis l’encodage de ce résultat donne « Tom &amp; Jerry ».
| Étape | Texte obtenu |
|---|---|
| Texte d’origine | Tom & Jerry |
| Encodé une fois | Tom & Jerry |
| Encodé deux fois | Tom &amp; Jerry |
Le navigateur décode un niveau à l’affichage. Un texte encodé deux fois s’affiche donc avec « & » au lieu de « & ».
Décoder un niveau à la fois
L’outil retire un seul niveau d’entités à chaque passage. Si le résultat contient encore des entités, le mode « Les deux » le signale et vous relancez le décodage sur le résultat.
| Texte | Premier décodage | Deuxième décodage |
|---|---|---|
| Tom &amp; Jerry | Tom & Jerry | Tom & Jerry |
| &lt;b&gt;gras&lt;/b&gt; | <b>gras</b> | <b>gras</b> |
Décoder un seul niveau évite de défaire un encodage voulu : un exemple de code qui doit afficher « & » à l’écran s’écrit « &amp; » dans la page.
Les accents et les symboles
Le décodage comprend toutes les entités nommées terminées par un point-virgule, pas seulement les cinq usuelles. « café à 5 € © 2026 » donne « café à 5 € © 2026 », l’espace insécable devenant une vraie espace insécable. Les entités en chiffres sont décodées aussi : « été » donne « été », et « 😀 » comme « 😀 » donnent le même emoji.
Ce que l’outil laisse intact
- Une entité inconnue comme « &inconnue; » reste telle quelle.
- Une entité sans point-virgule final, comme « & » ou « < » dans une phrase, n’est pas touchée.
- Une adresse avec des paramètres, comme « https://exemple.fr/?a=1¶m=2©=4 », reste exacte : « ¶m » et « © » n’y sont pas pris pour des entités.
Encoder du code pour l’afficher
Pour montrer un extrait de code dans une page, encodez-le une fois. Le texte « <a href="x">l’été & plus</a> » donne « <a href="x">l'été & plus</a> ». Les lettres accentuées ne sont pas encodées, seuls les cinq caractères réservés le sont.
Éviter le problème
Encodez une seule fois, au dernier moment, quand le texte est écrit dans la page. Pour remplacer en masse les restes d’un mauvais encodage, Chercher et remplacer dans un texte convient. Les adresses web suivent un autre codage, expliqué dans Base64, empreinte et adresse encodée, ne pas les confondre.
Où le problème apparaît
Dans une fiche produit, un titre de page, un courriel automatique ou un champ importé depuis un autre site : un « & » devient « & » quand le texte est encodé deux fois.
Vérifier le résultat
- Relancez le décodage tant que l’outil signale des entités restantes.
- Comparez avec le texte d’origine à l’écran.
- Contrôlez les espaces insécables et les emoji.
Questions fréquentes
- Pourquoi mon texte affiche-t-il « & » ?
- Une entité HTML a été encodée une fois de trop. Le navigateur décode un niveau à l’affichage, le second reste visible.
- Comment corriger ?
- Décodez un niveau à la fois avec l’outil, jusqu’à ce qu’il ne signale plus d’entités.
- L’outil décode-t-il les accents ?
- Oui, toutes les entités nommées terminées par un point-virgule, et les entités en chiffres.
- Comment éviter le problème ?
- Encodez une seule fois, au dernier moment, quand le texte est écrit dans la page.
