UltKit

Encodeur et décodeur d'entités HTML

Échappez les caractères que HTML interprète comme du balisage, et si vous le souhaitez tous les caractères non ASCII, ou retransformez en texte brut des entités comme é et —. Les deux opérations s'exécutent dans votre navigateur, et le texte décodé n'est jamais affiché comme du HTML actif.

Mode
Style d’entité
Échapper

0 caractères · 0 mots · 0 lignes

0 caractères · 0 mots · 0 lignes

Fonctionne entièrement dans cet onglet du navigateur. Votre texte n’est jamais envoyé ni stocké.

Caractères courants et leurs entités

Les formes nommée, décimale et hexadécimale se décodent toutes en un même caractère. L’encodeur connaît 216 entités nommées courantes ; le décodeur comprend toutes les références nommées de la norme HTML.

CaractèreNomméDécimalHexadécimal
&&&&
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
"&quot;&#34;&#x22;
'&apos;&#39;&#x27;
(espace insécable)&nbsp;&#160;&#xA0;
©&copy;&#169;&#xA9;
®&reg;&#174;&#xAE;
™&trade;&#8482;&#x2122;
€&euro;&#8364;&#x20AC;
£&pound;&#163;&#xA3;
¥&yen;&#165;&#xA5;
—&mdash;&#8212;&#x2014;
–&ndash;&#8211;&#x2013;
…&hellip;&#8230;&#x2026;
«&laquo;&#171;&#xAB;
»&raquo;&#187;&#xBB;
°&deg;&#176;&#xB0;
×&times;&#215;&#xD7;
÷&divide;&#247;&#xF7;
é&eacute;&#233;&#xE9;
π&pi;&#960;&#x3C0;
→&rarr;&#8594;&#x2192;
😀—&#128512;&#x1F600;

De 252 entités en HTML 4 à 2 231 en HTML5

Une référence de caractère permet d'écrire un caractère en ASCII uniquement. Les références numériques fonctionnent pour n'importe quel point de code Unicode, en décimal (&#233;) ou en hexadécimal (&#xE9;). Les références nommées sont plus faciles à retenir : HTML 4 en définissait 252, couvrant les lettres Latin-1 comme &eacute;, les lettres grecques, les symboles mathématiques et des signes typographiques comme &mdash; et &hellip;. Curieusement, &apos; n'en faisait pas partie ; il vient de XML et n'est devenu valide en HTML qu'avec HTML5.

HTML5 a porté la liste à 2 231 références de caractères nommées en absorbant le jeu d'entités MathML, si bien que des noms comme &check;, &bigstar; et &NotEqualTilde; fonctionnent aujourd'hui dans tous les navigateurs récents. Ce total inclut des graphies héritées sans point-virgule final, comme &amp et &copy, que les analyseurs acceptent encore par compatibilité mais qu'il ne faut pas écrire. L'encodeur proposé ici produit les noms HTML 4, largement pris en charge, plus &apos;, et se rabat sur une référence numérique pour tout le reste ; le décodeur confie le texte à l'analyseur du navigateur, et comprend donc les 2 231 noms.

Quoi échapper, et quand l'échappement ne suffit pas

Uniquement & < > " ' est le réglage pour un usage courant : il échappe les cinq caractères qui peuvent terminer un nœud de texte ou un attribut entre guillemets, ce qui suffit pour afficher un exemple de code sur une page ou insérer un texte saisi par un utilisateur dans du HTML en toute sécurité. Aussi tous les caractères non ASCII transforme aussi é, € et les emoji en références, pour les rares canaux qui ne gèrent pas UTF-8, comme certains anciens modèles d'e-mail ou des systèmes qui corrompent les encodages. Nommées, Décimales et Hexadécimales ne changent que l'écriture d'une référence ; les trois se décodent en un même caractère. Une page enregistrée en UTF-8 n'a pas besoin d'entités pour les lettres accentuées.

L'échappement protège le contexte HTML et rien d'autre. Un texte inséré dans un bloc de script, un gestionnaire d'événement en ligne comme onclick, un attribut style ou un href pouvant commencer par javascript: demande un traitement différent, et l'encodage en entités ne suffit pas à empêcher les failles XSS dans ces cas. Des frameworks comme React échappent le texte par défaut ; le double échappement est donc le bogue le plus courant dans les applications modernes : les utilisateurs voient &amp; là où une esperluette devrait apparaître. Pour supprimer entièrement les balises, convertissez le balisage avec HTML en TXT ; pour l'échappement dans les URL, utilisez Encoder et décoder une URL.

Questions fréquentes

Quels caractères faut-il échapper en HTML ?
Dans le texte, & et < sont indispensables, et > est échappé par convention. Dans la valeur d'un attribut, échappez aussi le guillemet qui la délimite. Échapper les cinq couvre les deux cas.
Quelle différence entre &nbsp; et une espace normale ?
&nbsp; est l'espace insécable, U+00A0. Elle ressemble à une espace mais empêche un retour à la ligne à cet endroit et, contrairement aux espaces ordinaires en HTML, n'est pas réduite quand plusieurs se suivent.
Pourquoi ma page affiche-t-elle &amp; au lieu d'une esperluette ?
Le texte a été échappé deux fois : une fois dans vos données et une autre par votre modèle ou votre framework. Stockez le texte brut et laissez une seule couche, généralement le modèle, faire l'échappement à l'affichage.
Peut-on décoder ici sans risque du HTML d'origine non fiable ?
Oui. Le décodeur analyse l'entrée comme du simple contenu textuel : aucune balise n'est créée, les scripts ne s'exécutent pas et les images ne se chargent pas. Seules les références d'entités sont converties en caractères.
Vaut-il mieux utiliser des entités nommées ou numériques ?
Les références nommées sont plus lisibles ; les références numériques fonctionnent pour tous les caractères et dans tous les analyseurs XML. En XML sans DTD, seules &amp;, &lt;, &gt;, &quot; et &apos; sont prédéfinies.