tigtools

Encodeur / décodeur d’entités HTML

Sécurisez du texte à insérer dans du HTML, ou reconvertissez des entités comme & et é en caractères ordinaires.

Fonctionne dans votre navigateur Sans inscription

Sens

& < > " et ' sont toujours échappés. Les autres caractères ne sont convertis que si vous choisissez une option pour les caractères non ASCII.

Mode d’emploi

  1. Choisissez Encoder pour sécuriser le texte en HTML, ou Décoder pour convertir les entités en caractères.
  2. Lors de l’encodage, choisissez si les lettres accentuées et les symboles doivent rester tels quels ou devenir des entités.
  3. Saisissez ou collez votre texte : le résultat s’actualise instantanément.
  4. Copiez le résultat, ou utilisez « Utiliser le résultat comme entrée » pour vérifier qu’il se décode comme le texte d’origine.

Fonctionnement

En HTML, quelques caractères ont une signification particulière : < ouvre une balise, & commence une entité, et " ou ' termine une valeur d’attribut. Pour les afficher sous forme de texte, il faut les écrire sous forme de références de caractères : &lt; pour <, &gt; pour >, &amp; pour &, &quot; pour " et &#39; pour '. L’apostrophe utilise la forme numérique, car &apos; n’est pas défini en HTML 4.

Tous les autres caractères, y compris les lettres accentuées, le texte chinois et les emoji, peuvent être écrits directement si la page est enregistrée et servie en UTF-8, l’encodage par défaut des sites modernes. Leur conversion en entités est nécessaire uniquement pour les systèmes qui ne gèrent pas correctement UTF-8, comme certains anciens modèles d’e-mail ou certaines bases de données. Vous pouvez alors choisir des entités nommées, par exemple &eacute; lorsqu’un nom courant existe (avec une référence numérique pour les autres caractères), ou des références numériques comme &#xE9; pour chaque caractère.

Le décodage n’utilise pas l’analyseur HTML du navigateur. Il s’appuie sur une table intégrée contenant les 252 entités nommées de HTML 4.01, &apos; et environ 30 noms courants de HTML5, ainsi que les références décimales et hexadécimales. Les références numériques suivent les règles de HTML5 : &#0;, les valeurs de substitution et les valeurs supérieures à U+10FFFF deviennent le caractère de remplacement �, tandis que les valeurs 128–159 sont interprétées selon Windows-1252 : &#150; devient donc un tiret demi-cadratin. Quelques anciens noms, comme &amp et &copy, sont également acceptés sans point-virgule final, comme dans les navigateurs. HTML5 définit plus de 2 000 noms ; les noms rares absents de la table sont laissés inchangés et répertoriés.

L’échappement du texte avant son insertion dans du HTML est une protection importante contre les attaques de type cross-site scripting (XSS), mais cette méthode ne convient qu’au contenu des éléments et aux valeurs d’attribut entre guillemets. Le texte inséré dans un bloc <script>, un attribut style ou une URL nécessite un échappement différent.

Exemples

Afficher du code sur une page web

Pour afficher <div class="box"> sous forme de texte dans un article de blog, encodez-le en &lt;div class=&quot;box&quot;&gt;. Le navigateur affiche la balise d’origine au lieu de créer un élément.

Préparer du texte pour un ancien modèle d’e-mail

Avec l’option « Entités nommées si disponibles », « Café – 5 € » devient Caf&eacute; &ndash; 5 &euro;, qui s’affiche correctement même si l’e-mail est envoyé avec un jeu de caractères autre que UTF-8.

Nettoyer du texte récupéré ou exporté

Un export de CMS contient Fish &amp; Chips &#8211; &pound;9. Le décodage donne Fish & Chips – £9, prêt à coller dans un tableur.

Foire aux questions

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

Dans le contenu d’un élément, il faut échapper & et < (il est aussi recommandé d’échapper >). Dans les valeurs d’attribut, échappez également le guillemet qui délimite la valeur. Échapper partout les cinq caractères (& < > " ') est la règle simple et sûre appliquée par cet outil.

Quelle différence y a-t-il entre les entités nommées et numériques ?

Les entités nommées telles que &copy; sont plus faciles à lire, mais ne couvrent qu’un nombre limité de caractères. Les références numériques telles que &#169; (décimale) ou &#xA9; (hexadécimale) fonctionnent pour tous les caractères Unicode, y compris les emoji.

Pourquoi &nbsp; se décode-t-il en un caractère qui ressemble à une espace ?

&nbsp; est une espace insécable (U+00A0). Elle ressemble à une espace normale, mais empêche un retour à la ligne et n’est pas réduite par HTML. Il s’agit d’un caractère différent de l’espace ordinaire, ce qui compte lorsque vous comparez ou recherchez du texte.

Dois-je encoder les lettres accentuées comme é ?

Non, si votre page utilise UTF-8 (<meta charset="utf-8">), comme c’est le cas pour presque toutes les pages modernes. Gardez le réglage par défaut : seuls les cinq caractères spéciaux seront échappés.

L’encodage suffit-il à empêcher les attaques XSS ?

Cela suffit pour du texte non fiable inséré dans le contenu d’un élément HTML ou dans des valeurs d’attribut entre guillemets. Cela ne suffit pas pour le code JavaScript, le CSS, les attributs sans guillemets ni les URL comme href="javascript:…", qui nécessitent un traitement adapté à leur contexte.

Confidentialité

L’encodage et le décodage sont effectués dans votre navigateur à l’aide d’opérations sur des chaînes de caractères. Votre texte n’est jamais interprété en HTML, envoyé, enregistré ni inclus dans les statistiques.