Encodage HTML
L'encodage HTML est un mécanisme fondamental du développement web qui permet de représenter des caractères spéciaux ou réservés à l'aide de séquences de texte standardisées. Lorsque vous créez une page web, certains symboles comme les chevrons, les guillemets ou le symbole esperluette possèdent une signification technique précise pour le navigateur : ils délimitent les balises, les attributs ou les entités. Si vous souhaitez afficher ces symboles littéralement à l'écran sans qu'ils soient interprétés comme du code, vous devez les encoder. Ce processus repose sur les entités HTML, qui prennent généralement la forme d'une esperluette suivie d'un nom mnémotechnique ou d'un numéro de référence, et se terminent par un point-virgule. Par exemple, le symbole inférieur `` devient `>`, et l'esperluette `&` s'écrit `&`. Cette conversion garantit que le navigateur restitue le caractère visuel attendu plutôt que d'essayer d'exécuter une balise ou d'ouvrir un attribut. Au-delà des caractères réservés, l'encodage prend tout son sens pour afficher des symboles absents du clavier standard : symboles monétaires, flèches, opérateurs mathématiques, lettres accentuées rares ou alphabets non latins. L'utilité de cette pratique dépasse la simple affichage. Elle constitue une barrière de sécurité essentielle contre les attaques de type injection de script intersite (XSS). En encodant systématiquement les données provenant de l'utilisateur avant de les réinjecter dans le flux HTML, vous neutralisez tout code malveillant qu'un visiteur aurait pu tenter d'insérer via un formulaire ou une URL. Le navigateur traite alors l'entrée comme du texte brut inoffensif plutôt que comme du code exécutable. Dans un flux de travail moderne, l'encodage manuel est rare. Les moteurs de templates (Twig, Blade, Jinja, React, Vue) intègrent des fonctions d'échappement automatique qui appliquent le bon encodage selon le contexte : attribut HTML, contenu textuel, JavaScript, CSS ou URL. Chaque contexte possède ses propres règles ; encoder pour un attribut `href` diffère d'un encodage pour une balise `script`. Comprendre ces nuances permet d'éviter les failles de sécurité tout en préservant l'intégrité visuelle du contenu. Enfin, bien que l'encodage HTML résolve l'affichage dans le balisage, il ne dispense pas de déclarer l'encodage du document lui-même via la balise ``. L'UTF-8 supporte nativement la quasi-totalité des caractères du monde, réduisant le besoin d'entités pour les langues courantes. Toutefois, la maîtrise des entités HTML reste indispensable pour les caractères de contrôle, les espaces insécables, les tirets conditionnels et la sécurité applicative.