Pack Camo

Encodeur et décodeur d'entités HTML

Échappez du texte pour le HTML et retransformez les &entités; en caractères. Tout s'exécute localement — rien n'est téléversé.

Entrée
Text · HTML
Sortie
Escaped HTML · decoded text

Texte

66 caractères

HTML

102 caractères

<p class="note">Fish & chips — £4.50, café crème "très bon" 😀</p>

Échapper du texte pour le HTML, ou retransformer des entités en texte

Cet encodeur d'entités HTML échappe les caractères qui seraient sinon lus comme du balisage, et le décodeur retransforme les entités comme &, é et € en caractères. Choisissez des références nommées, décimales ou hexadécimales, échappez seulement le nécessaire ou tous les caractères non ASCII, et retrouvez les entités courantes dans la table de référence. Tout s'exécute dans votre navigateur ; rien de ce que vous collez n'est téléversé.

Comment encoder ou décoder des entités HTML

  1. Choisissez Encoder pour échapper du texte pour le HTML, ou Décoder pour retransformer des entités en caractères.
  2. À l'encodage, choisissez ce qu'il faut échapper : seulement les caractères spéciaux (& < > " ') ou aussi tous les caractères non ASCII.
  3. Choisissez la forme : nommée (&eacute;), décimale (&#233;) ou hexadécimale (&#xE9;).
  4. Copiez le résultat, ou renvoyez-le dans l'entrée pour vérifier l'aller-retour. Activez Table de référence pour copier une entité isolée.

Pourquoi le HTML doit être échappé

En HTML, < ouvre une balise et & ouvre une référence de caractère, et dans un attribut le guillemet termine la valeur. Pour afficher ces caractères comme du texte, il faut les écrire sous forme d'entités : &lt;, &amp;, &quot; et &#39;. Oublier de le faire, c'est ainsi qu'un « <b » égaré dans un commentaire met le reste d'une page en gras — et, quand le texte vient d'un utilisateur, ainsi que naît une faille de cross-site scripting (XSS).

L'échappement est la dernière ligne de défense, pas la seule. Les moteurs de templates comme React, Vue, Jinja et Blade échappent la sortie pour vous ; cet outil sert là où ils ne vont pas — HTML statique, modèles d'e-mails, documentation, champs de CMS, et pour vérifier ce qu'un système a réellement enregistré.

Références nommées, décimales et hexadécimales

L'apostrophe s'écrit &#39; plutôt que &apos; : &apos; est valide en HTML5 et en XML mais n'a jamais fait partie du HTML 4, et certains anciens analyseurs ne le connaissent pas.

Nommée (&eacute;)
Lisible, et la forme que la plupart des gens reconnaissent. HTML5 définit environ 2 200 noms, mais tous les caractères n'en ont pas ; ceux qui n'en ont pas sont écrits en décimal.
Décimale (&#233;)
Le point de code Unicode en base 10. Fonctionne pour tous les caractères, dans tous les analyseurs HTML et XML.
Hexadécimale (&#xE9;)
Le même point de code en base 16, comme l'écrivent les tables Unicode (U+00E9).

Faut-il échapper les lettres accentuées et les emoji ?

Pas sur une page servie en UTF-8, c'est-à-dire presque toutes les pages aujourd'hui. Seuls les cinq caractères spéciaux doivent être échappés ; « café », « 日本語 » et les emoji peuvent s'écrire tels quels. C'est ce que fait l'option seulement les caractères spéciaux, qui garde le HTML lisible.

Échapper tous les caractères non ASCII reste utile quand la sortie passe par quelque chose qui ne gère pas bien l'UTF-8 : un ancien système en ISO-8859-1 ou Windows-1252, certaines chaînes d'envoi d'e-mails, ou un fichier source dont vous ne maîtrisez pas l'encodage. Le résultat est en ASCII pur et survit à tous ces cas.

Comment fonctionne le décodage

Le décodeur lit les références nommées, décimales (&#169;) et hexadécimales (&#xA9;), selon les règles des navigateurs : les références numériques de 128 à 159 sont lues en Windows-1252, comme le prévoit la norme HTML, donc &#150; devient un tiret demi-cadratin ; les points de code invalides deviennent le caractère de remplacement ; et les quelques anciens noms que les navigateurs acceptent sans point-virgule, comme &copy, sont aussi décodés. Les noms inconnus, généralement des fautes de frappe comme &nbps;, sont laissés en place et listés pour que vous puissiez les corriger.

Si le texte provient d'une URL plutôt que de HTML, utilisez plutôt le décodeur d'URL : %3C relève de l'encodage pourcent, pas d'une entité HTML.

Questions fréquentes

Que sont les entités HTML ?
Les entités HTML sont des codes qui représentent des caractères, écrits entre & et ;. Elles permettent d'afficher des caractères que le HTML traiterait sinon comme du balisage, comme < et &, ou des caractères difficiles à taper, comme © ou une espace insécable.
Quels caractères faut-il échapper en HTML ?
Cinq : & en &amp;, < en &lt;, > en &gt;, le guillemet double en &quot; et l'apostrophe en &#39;. Les guillemets ne comptent que dans les valeurs d'attribut, mais les échapper partout ne pose aucun problème.
Comment décoder des entités HTML ?
Choisissez Décoder et collez le texte. Les entités nommées, décimales et hexadécimales sont converties en caractères pendant que vous tapez, et les noms d'entités inconnus sont listés.
Quelle est la différence entre &nbsp; et une espace normale ?
&nbsp; est une espace insécable : elle ressemble à une espace mais empêche un retour à la ligne à cet endroit, et les navigateurs ne fusionnent pas plusieurs d'entre elles en une seule. Elle est utile entre un nombre et son unité, comme 10&nbsp;kg, ou avant les deux-points en typographie française.
Faut-il utiliser &apos; ou &#39; pour une apostrophe ?
&#39; fonctionne partout. &apos; est valide en HTML5 et en XML mais pas en HTML 4 : &#39; est donc le choix le plus sûr pour l'e-mail et les anciens systèmes.
Échapper le HTML protège-t-il contre les failles XSS ?
Échapper le texte avant de l'insérer dans du HTML est la défense de base contre le cross-site scripting, mais l'échappement doit correspondre au contexte : texte HTML, attributs, URL et JavaScript ont chacun leur propre encodage. Préférez un système de templates qui échappe automatiquement.
Mon texte est-il envoyé à un serveur ?
Non. L'encodage et le décodage se font entièrement dans votre navigateur.