TanodTools
FR

Encoder et décoder des entités HTML

Transformez du texte en entités HTML, ou transformez des entités comme & et € en les caractères qu'elles représentent.

Fonctionne dans votre navigateur ; rien de ce que vous saisissez ne quitte votre appareil

Que souhaitez-vous faire ?

Collez du texte pour commencer.

Texte jusqu'à quelques millions de caractères. Le décodage comprend toutes les entités nommées que connaît votre navigateur (la liste complète de HTML5) ainsi que les nombres décimaux et hexadécimaux ; une référence a besoin de son point-virgule final. Le décodage ne se fait que sur un niveau : &amp;lt; devient &lt;, et non <.

Comment encoder et décoder des entités HTML

  1. Choisissez Encoder ou Décoder et collez votre texte.
  2. Pour encoder, choisissez d'encoder seulement les caractères sensibles, d'utiliser des noms comme &eacute; lorsqu'ils existent, ou d'utiliser des nombres pour tout ce qui sort de l'ASCII.
  3. Copiez le résultat.

Ce que sont les entités HTML

Le HTML donne un rôle particulier à quelques caractères : le signe inférieur à ouvre une balise, l'esperluette ouvre une entité et les guillemets ferment la valeur d'un attribut. Pour afficher l'un de ces caractères comme du texte, vous écrivez une entité à la place : &lt; pour <, &amp; pour &. Les entités permettent aussi d'écrire des caractères difficiles à saisir ou qu'un ancien encodage de page ne peut pas contenir, comme &eacute; pour é, &euro; pour € ou &#128512; pour un émoji.

Une entité commence par une esperluette et se termine par un point-virgule. Entre les deux se trouve soit un nom (copy), soit un nombre décimal après # (#169), soit un nombre hexadécimal après #x (#xA9). Ces trois écritures donnent le symbole du copyright. L'encodage parcourt votre texte caractère par caractère : les cinq caractères sensibles deviennent toujours des entités, et le reste dépend de l'option choisie, de rien du tout jusqu'à un nombre pour chaque caractère.

Le décodage lit chaque référence et la remplace par son caractère. Les nombres sont convertis directement, selon les règles du HTML : un nombre nul, hors plage ou correspondant à un substitut (surrogate) devient le caractère de remplacement, et les nombres de 128 à 159 sont lus comme des caractères Windows-1252, comme le font les navigateurs. Les noms sont résolus par votre navigateur, qui connaît toute la liste de HTML5. Le décodage se fait en une seule passe : &amp;lt; devient donc &lt; et non un simple signe inférieur à.

Astuces

Questions fréquentes

Quels caractères faut-il échapper en HTML ?

Cinq : le signe inférieur à < (&lt;), le signe supérieur à > (&gt;), l'esperluette & (&amp;), les guillemets doubles " (&quot;) et l'apostrophe ' (&#39;). Les échapper permet d'afficher du code ou une saisie utilisateur comme du texte, sans qu'il soit lu comme du balisage. La première option, Seulement les caractères sensibles, fait exactement cela.

Quelle est la différence entre entités nommées et numériques ?

Une entité nommée utilise un mot court, comme &eacute; pour é ou &euro; pour €. Une entité numérique utilise le point de code Unicode, en décimal (&#233;) ou en hexadécimal (&#xE9;). Les deux donnent le même caractère. Seuls certains caractères ont un nom ; les autres demandent des nombres.

Pourquoi encoder les caractères non ASCII ?

Si une page ou un e-mail n'est pas servi en UTF-8, les lettres accentuées et les symboles peuvent se transformer en charabia. Les entités sont de l'ASCII pur : elles survivent à n'importe quel encodage.

Le décodage couvre-t-il toutes les entités ?

Oui. Les références décimales et hexadécimales sont converties directement, et les noms sont résolus par l'analyseur HTML du navigateur lui-même, qui connaît la liste complète de HTML5 avec plus de deux mille noms. Une référence sans point-virgule est laissée telle quelle, de même qu'un nom inconnu, qui est listé pour que vous le voyiez.

L'encodage suffit-il à empêcher le XSS ?

Encoder les cinq caractères sensibles est la bonne solution quand vous placez du texte dans le contenu d'un élément HTML ou dans la valeur d'un attribut entre guillemets. Cela ne suffit pas dans un script, un style, un attribut sans guillemets ou une URL, qui demandent leur propre échappement. Cet outil sert pour du texte que vous collez ; il ne remplace pas l'échappement de votre framework.

Mon texte est-il envoyé quelque part ?

Non. Tout se passe dans votre navigateur et rien ne quitte votre appareil.