À quoi servent les entités HTML
HTML traite certains caractères comme du balisage, pas comme du texte littéral. L’esperluette démarre les références de caractère ; les chevrons ouvrent les balises ; les guillemets délimitent les attributs. Lorsque ces caractères doivent apparaître comme contenu—articles de blog, extraits de documentation, commentaires utilisateurs—on les encode en entités HTML (aussi appelées références de caractère). L’analyseur HTML du navigateur reconvertit les entités en caractères voulus lors de la construction du DOM.
Une entité peut être nommée (&, <, ") ou numérique (&, &). Les formes nommées sont plus lisibles dans le source ; les formes numériques peuvent exprimer n’importe quel point de code Unicode même sans nom connu. L’encodage est une technique de sûreté du balisage et d’interopérabilité. Ce n’est pas du chiffrement, ni un substitut à l’encodage de sortie conscient du contexte dans les frameworks de sécurité applicative.
Encodez une phrase d’exemple avec du texte vers les entités HTML, puis inversez-la avec des entités HTML vers le texte.
Lien entre les deux sous-outils
- Du texte vers les entités HTML — convertit les caractères spéciaux en références d’entité sûres pour HTML, adaptées à l’intégration dans le balisage.
- Des entités HTML vers le texte — développe les références d’entité en caractères ordinaires pour lecture ou traitement ultérieur.
Faites l’aller-retour pour préparer des exemples de tutoriel, nettoyer du contenu CMS collé, ou vérifier qu’une étape d’échappement de modèle correspond à l’attendu. Si le décodage laisse des entités intactes, elles peuvent être malformées (& sans ;) ou hors de l’ensemble reconnu par le décodeur.
Références nommées versus numériques
Entités nommées. HTML définit un large ensemble de noms ( , ©, €, …). Seul un petit noyau est requis pour l’échappement basique du texte en HTML : &, <, >, et souvent " / ' selon le contexte d’attribut.
Numérique décimal. © est le signe copyright. Le nombre est un point de code Unicode.
Numérique hexadécimal. © est le même signe copyright. L’hex est courant dans les spécifications et la sortie générée.
Mélanger les styles dans un document est du HTML valide, mais les équipes standardisent souvent les entités nommées pour la lisibilité du contenu écrit à la main et les formes numériques dans les pipelines générés.
Le contexte compte pour la sécurité
Les règles d’échappement dépendent de l’endroit où la chaîne aboutira :
- Nœuds texte HTML — échapper
<,>et&empêche l’injection accidentelle de balises. - Valeurs d’attributs HTML — les guillemets doivent être traités selon le style de quotation.
- Littéraux de chaînes JavaScript dans HTML — l’échappement par entités HTML seul ne suffit pas ; il faut un encodage conscient de JS.
- Composants de requête URL — utilisez le percent-encoding, pas les entités HTML.
Les frameworks applicatifs fournissent des encodeurs spécifiques au contexte pour une raison. Un utilitaire général « texte → entités » est excellent pour la rédaction et le débogage de contenu ; ce n’est pas à lui seul une défense XSS complète lorsque les données passent dans des scripts, gestionnaires d’événements ou CSS.
Usages légitimes courants
Publier des exemples de code en HTML. Afficher <div> sur une page exige d’encoder les chevrons pour que le navigateur ne les traite pas comme de vraies balises.
Contenu e-mail et CMS. Les éditeurs stockent parfois des entités ; décoder aide à voir le texte lisible pour la migration ou l’indexation de recherche.
Normaliser le copier-coller. Les traitements de texte et sites web insèrent et des entités de guillemets typographiques ; décoder clarifie ce qui a vraiment été collé.
Preuves de localisation. Vérifier que é et é sont traités de façon cohérente entre modèles.
Entités versus encodage URL versus échappements Unicode
| Mécanisme | Alphabet / forme | Usage typique |
|---|---|---|
| Entités HTML | &name; / &#…; | Texte HTML/XML |
| Percent-encoding | %20, %2F | URLs |
JSON \uXXXX | Échappements Unicode | Chaînes JSON |
| Entités XML prédéfinies | Ensemble nommé plus petit | XML |
Choisir la mauvaise couche est un bug fréquent : mettre %20 dans du texte HTML affiche littéralement %20, tandis que mettre dans une URL est incorrect pour des serveurs qui attendent du percent-encoding.
Limites
- Encoder chaque caractère en entité numérique rend le source illisible et est rarement nécessaire.
- Décoder n’exécute pas le HTML ; cela ne fait qu’étendre les références dans une chaîne.
- Le double encodage (
&lt;) est une odeur CMS courante—décodez avec soin et arrêtez lorsque le texte est lisible, sinon vous risquez d’aller trop loin. - Gardez le contenu sensible non publié hors ligne lorsque la politique l’exige.
Résumé
Les entités HTML permettent aux caractères spéciaux et significatifs pour le balisage de circuler en sécurité dans le source HTML. Ce hub associe des convertisseurs d’encodage et de décodage pour la rédaction, l’enseignement et le nettoyage. Respectez le contexte de sortie pour les applications sensibles à la sécurité, préférez des entités nommées claires pour le contenu écrit à la main, et ne confondez pas l’échappement HTML avec celui d’URL ou de JSON.