Encodeur et décodeur HTML pour le texte et les entités

Convertissez les caractères spéciaux en entités HTML ou décodez les références de caractères pour retrouver un texte lisible. Par défaut, l’outil échappe le texte pour HTML tout en conservant les lettres accentuées, les symboles et les émojis. Collez votre texte et copiez le résultat, ou ouvrez les Options pour choisir un autre usage.

Chargement de l'outil…

À quoi sert l’encodage des entités HTML ?

HTML utilise des caractères comme < et & dans sa syntaxe. Pour les afficher comme du texte ordinaire, vous pouvez les remplacer par des références de caractères, souvent appelées entités HTML. Par exemple, &lt; affiche un signe inférieur et &amp; une esperluette.

Il existe trois formes courantes : une référence nommée comme &copy;, une référence décimale comme &#169; et une référence hexadécimale comme &#xA9;. Toutes trois représentent le symbole de copyright, ©. Les noms sont sensibles à la casse ; terminez les références par un point-virgule.

L’encodage permet d’afficher un exemple HTML sur une page, d’insérer du texte littéral dans un modèle ou de représenter un symbole par une référence explicite. Le décodage facilite la lecture de texte encodé provenant d’un export, d’un fichier source ou d’un extrait copié. Il transforme les références en caractères ; il ne supprime pas les balises HTML et n’affiche pas une page.

Par exemple, l’encodage de ce texte :

<strong>Hello & welcome</strong>

produit du code HTML qui affiche les balises littéralement :

&lt;strong&gt;Hello &amp; welcome&lt;/strong&gt;

Encoder un texte déjà encodé peut doubler ses entités : &amp; devient &amp;amp;. Décodez d’abord uniquement si vous savez que la source est déjà encodée en entités.

Pour l’affichage habituel des pages, utilisez l’échappement automatique de votre moteur de modèles. L’échappement du texte HTML n’est ni un nettoyage général du HTML, ni un échappement des chaînes JavaScript, ni un encodage d’URL ; les valeurs d’attribut nécessitent des guillemets adaptés et une validation propre au contexte.

Entités HTML courantes et caractères réservés

Ces tableaux constituent un aide-mémoire, pas une liste exhaustive. < et & ont un rôle particulier dans le texte HTML ; les guillemets importent lorsqu’ils délimitent des attributs. Les signes monétaires, symboles mathématiques et espaces ci-dessous sont des références utiles, mais ne sont pas tous des caractères de syntaxe réservés. Les références décimales et hexadécimales représentent le même caractère Unicode : &#169; et &#xA9; signifient tous deux ©. Le x indique une valeur hexadécimale.

L’onglet HTML5 concerne le HTML moderne. HTML4 présente les noms historiques courants et la différence de traitement des apostrophes. XML énumère ses cinq noms prédéfinis et explique quand utiliser des références numériques. Changer d’onglet de référence ne modifie pas les réglages du convertisseur.

Références de caractères HTML5

Les guillemets peuvent rester littéraux dans du texte HTML ordinaire ; échappez le guillemet correspondant lorsque vous insérez du texte dans un attribut délimité par des guillemets.

La liste des références de caractères nommées du WHATWG (en anglais) définit les noms pris en charge par le HTML moderne.

CaractèreNom de l’entitéRéférence décimaleRéférence hexadécimaleDescription
&&amp;&#38;&#x26;Esperluette ; commence une référence de caractère.
<&lt;&#60;&#x3C;Signe inférieur ; commence le balisage.
>&gt;&#62;&#x3E;Signe supérieur ; généralement littéral dans le texte, mais peut être échappé.
"&quot;&#34;&#x22;Guillemet double ; à échapper dans un attribut entre guillemets doubles.
'&apos;&#39;&#x27;Apostrophe ; à échapper dans un attribut entre guillemets simples.
Espace insécable&nbsp;&#160;&#xA0;Garde les mots voisins sur la même ligne.
©&copy;&#169;&#xA9;Symbole de copyright.
®&reg;&#174;&#xAE;Symbole de marque déposée.
™&trade;&#8482;&#x2122;Symbole de marque commerciale.
€&euro;&#8364;&#x20AC;Symbole de l’euro.
£&pound;&#163;&#xA3;Symbole de la livre sterling.
¥&yen;&#165;&#xA5;Symbole du yen ou du yuan.
×&times;&#215;&#xD7;Signe de multiplication.
÷&divide;&#247;&#xF7;Signe de division.
≤&le;&#8804;&#x2264;Signe inférieur ou égal.
≥&ge;&#8805;&#x2265;Signe supérieur ou égal.
→&rarr;&#8594;&#x2192;Flèche vers la droite.
✓&check;&#10003;&#x2713;Coche ; ce nom n’existe pas en HTML4.

Références de caractères HTML4

La traduction française de la référence des entités HTML 4.01 décrit l’ancien ensemble de noms. Le texte normatif du W3C (en anglais) reste la référence. HTML4 ne définit pas &apos; ; utilisez &#39; pour une apostrophe si cette compatibilité est nécessaire. Les noms communs fonctionnent aussi en HTML5.

CaractèreNom de l’entitéRéférence décimaleRéférence hexadécimaleDescription
&&amp;&#38;&#x26;Esperluette ; à échapper pour l’afficher littéralement.
<&lt;&#60;&#x3C;Signe inférieur ; à échapper pour l’afficher comme du texte.
>&gt;&#62;&#x3E;Signe supérieur.
"&quot;&#34;&#x22;Guillemet double.
'Aucun nom HTML4&#39;&#x27;Apostrophe ; utilisez la référence numérique.
Espace insécable&nbsp;&#160;&#xA0;Espace empêchant un retour à la ligne.
©&copy;&#169;&#xA9;Symbole de copyright.
®&reg;&#174;&#xAE;Symbole de marque déposée.
™&trade;&#8482;&#x2122;Symbole de marque commerciale.
€&euro;&#8364;&#x20AC;Symbole de l’euro.
£&pound;&#163;&#xA3;Symbole de la livre sterling.
¥&yen;&#165;&#xA5;Symbole du yen ou du yuan.
×&times;&#215;&#xD7;Signe de multiplication.
÷&divide;&#247;&#xF7;Signe de division.
≤&le;&#8804;&#x2264;Signe inférieur ou égal.
≥&ge;&#8805;&#x2265;Signe supérieur ou égal.
→&rarr;&#8594;&#x2192;Flèche vers la droite.

Références de caractères XML

XML ne définit que cinq noms d’entités prédéfinis. Cette traduction française est non normative ; le texte anglais du W3C fait foi. Ils fonctionnent sans DTD ni déclaration personnalisée. Les références sont sensibles à la casse et nécessitent un point-virgule.

CaractèreNom de l’entitéRéférence décimaleRéférence hexadécimaleDescription
&&amp;&#38;&#x26;Échappez une esperluette littérale dans le texte ou les attributs.
<&lt;&#60;&#x3C;Échappez un signe inférieur littéral dans le texte ou les attributs.
>&gt;&#62;&#x3E;Facultatif dans du texte ordinaire, sauf pour éviter la séquence littérale ]]>.
"&quot;&#34;&#x22;À échapper dans un attribut entre guillemets doubles.
'&apos;&#39;&#x27;À échapper dans un attribut entre guillemets simples.

Les noms comme &nbsp; et &copy; ne sont pas prédéfinis en XML. Utilisez &#160; pour une espace insécable ou &#169; pour ©, ou déclarez les noms dans une DTD. Les références numériques doivent toujours désigner des caractères autorisés par XML.

Choisissez Texte avec guillemets pour échapper ces cinq caractères. Cet outil ne valide pas le XML et ne supprime pas les caractères interdits. Le mode Décoder applique les règles HTML5 ; il n’analyse pas du XML.

Encodage et décodage HTML dans le code

Pour des conversions répétées dans une application, utilisez une bibliothèque standard ou une bibliothèque d’entités maintenue. Ces exemples encodent le même court texte puis le décodent. Ils illustrent une conversion de chaînes, pas l’affichage de HTML non fiable. Les bibliothèques traitent différemment les guillemets, Unicode et les références incomplètes : des résultats équivalents peuvent donc employer des écritures d’entités différentes.

JavaScript et TypeScript

La bibliothèque entities (en anglais) fonctionne dans Node.js et dans les applications pour navigateur. Installez-la avec npm install entities. Cet exemple utilise escapeText, comme l’option par défaut Texte HTML (recommandé) de cet outil. Utilisez escapeUTF8 pour Texte avec guillemets ou encodeNonAsciiHTML pour Entités étendues.

import { escapeText, decodeHTML } from "entities";

const text = "<p>Tea & coffee</p>";
const encoded = escapeText(text);
const decoded = decodeHTML(encoded);

console.log(encoded); // &lt;p&gt;Tea &amp; coffee&lt;/p&gt;
console.log(decoded); // <p>Tea & coffee</p>

Pour placer du texte brut sur une page web, l’affecter à textContent évite de l’interpréter comme du balisage. encodeURIComponent effectue un encodage d’URL, qui est une opération différente.

Python

Le module html intégré à Python propose les deux opérations. Sa documentation française comporte encore des passages en anglais. html.escape échappe les guillemets par défaut tout en conservant le texte Unicode ordinaire ; html.unescape reconnaît les références nommées et numériques HTML5.

import html

text = "<p>Tea & coffee</p>"
encoded = html.escape(text, quote=True)
decoded = html.unescape(encoded)

print(encoded)  # &lt;p&gt;Tea &amp; coffee&lt;/p&gt;
print(decoded)  # <p>Tea & coffee</p>

PHP

Utilisez htmlspecialchars pour les caractères spéciaux et html_entity_decode pour décoder les références. Les options explicites sélectionnent HTML5, échappent les deux types de guillemets et remplacent les séquences UTF-8 invalides pendant l’encodage. Les lettres Unicode ordinaires restent inchangées.

<?php
$text = '<p>Tea & coffee</p>';
$flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5;
$encoded = htmlspecialchars($text, $flags, 'UTF-8');
$decoded = html_entity_decode($encoded, $flags, 'UTF-8');

// Run in the CLI to inspect both strings as text.
echo $encoded, PHP_EOL; // &lt;p&gt;Tea &amp; coffee&lt;/p&gt;
echo $decoded, PHP_EOL; // <p>Tea & coffee</p>

C# et .NET

System.Net.WebUtility fournit la conversion HTML sans paquet supplémentaire. HtmlEncode et HtmlDecode sont pratiques pour les chaînes ; ne supposez pas que chaque décodeur reconnaît toutes les références nommées HTML5.

using System;
using System.Net;

string text = "<p>Tea & coffee</p>";
string encoded = WebUtility.HtmlEncode(text);
string decoded = WebUtility.HtmlDecode(encoded);

Console.WriteLine(encoded); // &lt;p&gt;Tea &amp; coffee&lt;/p&gt;
Console.WriteLine(decoded); // <p>Tea & coffee</p>

Go

Le paquet standard html (en anglais) de Go échappe les cinq caractères spéciaux et décode un ensemble plus large de références. Pour un véritable modèle HTML, préférez html/template (en anglais), qui applique l’échappement selon le contexte.

package main

import (
    "fmt"
    "html"
)

func main() {
    text := "<p>Tea & coffee</p>"
    encoded := html.EscapeString(text)
    decoded := html.UnescapeString(encoded)

    fmt.Println(encoded) // &lt;p&gt;Tea &amp; coffee&lt;/p&gt;
    fmt.Println(decoded) // <p>Tea & coffee</p>
}

Rust

Ajoutez le crate html-escape (en anglais) avec cargo add html-escape. Sa fonction encode_text échappe &, < et > pour du texte HTML ordinaire. Elle laisse les guillemets inchangés ; pour une valeur d’attribut entre guillemets, utilisez l’encodeur d’attribut approprié du crate. decode_html_entities décode les références nommées et numériques terminées, avec un comportement plus strict qu’un navigateur pour les entrées mal formées.

use html_escape::{decode_html_entities, encode_text};

fn main() {
    let text = "<p>Tea & coffee</p>";
    let encoded = encode_text(text);
    let decoded = decode_html_entities(encoded.as_ref());

    println!("{}", encoded); // &lt;p&gt;Tea &amp; coffee&lt;/p&gt;
    println!("{}", decoded); // <p>Tea & coffee</p>
}

Java

Ajoutez Apache Commons Text (org.apache.commons:commons-text) à votre projet Maven ou Gradle. Sa classe StringEscapeUtils (en anglais) fournit escapeHtml4 et unescapeHtml4. Ces méthodes utilisent les noms HTML4, pas l’ensemble complet HTML5 ; escapeHtml4 n’échappe pas les apostrophes.

import org.apache.commons.text.StringEscapeUtils;

public class HtmlEntitiesExample {
    public static void main(String[] args) {
        String text = "<p>Tea & coffee</p>";
        String encoded = StringEscapeUtils.escapeHtml4(text);
        String decoded = StringEscapeUtils.unescapeHtml4(encoded);

        System.out.println(encoded); // &lt;p&gt;Tea &amp; coffee&lt;/p&gt;
        System.out.println(decoded); // <p>Tea & coffee</p>
    }
}

Swift

Ajoutez SwiftSoup avec Swift Package Manager (en anglais) et incluez son produit dans votre cible. Utilisez Entities.escape pour le texte HTML et Parser.unescapeEntities pour décoder les références sans supprimer les balises ni afficher du HTML. L’argument false sélectionne le contexte texte plutôt que le contexte attribut pour le décodage. L’échappement du texte laisse les guillemets inchangés : ce n’est donc pas un encodeur de valeurs d’attribut entre guillemets.

import SwiftSoup

let text = "<p>Tea & coffee</p>"
let encoded = Entities.escape(text)

do {
    let decoded = try Parser.unescapeEntities(encoded, false)
    print(encoded) // &lt;p&gt;Tea &amp; coffee&lt;/p&gt;
    print(decoded) // <p>Tea & coffee</p>
} catch {
    print("Could not decode HTML entities: \(error)")
}

Delphi / Object Pascal

La classe TNetEncoding.HTML (en anglais) de Delphi, dans System.NetEncoding, fournit Encode et Decode. Elle échappe &, <, > et les guillemets doubles. Son décodeur documenté reconnaît les références numériques et les noms amp, lt, gt et quot ; il ne faut pas attendre une prise en charge complète des entités nommées HTML5 ni l’échappement des apostrophes. Cet exemple utilise la bibliothèque d’exécution de Delphi, qui n’est pas partagée par tous les compilateurs Object Pascal.

program HtmlEntitiesExample;

{$APPTYPE CONSOLE}

uses
  System.NetEncoding;

var
  Text, Encoded, Decoded: string;
begin
  Text := '<p>Tea & coffee</p>';
  Encoded := TNetEncoding.HTML.Encode(Text);
  Decoded := TNetEncoding.HTML.Decode(Encoded);

  Writeln(Encoded); // &lt;p&gt;Tea &amp; coffee&lt;/p&gt;
  Writeln(Decoded); // <p>Tea & coffee</p>
end.

Comment utiliser cet outil

  1. Choisissez une conversion. Sélectionnez Encoder les entités HTML pour transformer des caractères comme < et & en références. Sélectionnez Décoder les entités HTML pour transformer &lt; ou &#169; en caractères lisibles.
  2. Choisissez un style d’encodage si nécessaire. En mode Encoder, ouvrez Options pour changer de style. Conservez Texte HTML (recommandé) pour le texte ordinaire d’une page web. Choisissez Texte avec guillemets pour les valeurs d’attribut entre guillemets ou Entités étendues pour convertir davantage de caractères. Les options sont masquées en mode Décoder.
  3. Saisissez ou collez votre texte dans Entrée. La sortie est mise à jour immédiatement lors de la saisie ou d’un changement de réglage. Par exemple, encoder Tea & coffee produit Tea &amp; coffee ; décoder ce résultat restitue le texte initial.
  4. Copiez ou réutilisez le résultat. Sélectionnez Copier le résultat à côté de Sortie. Inverser place le résultat dans Entrée sans changer le mode de conversion. Pour annuler un encodage, passez en mode Décoder après avoir utilisé Inverser. Effacer, à côté d’Entrée, vide les deux champs.

Choisir un style d’encodage

Le HTML moderne prend en charge Unicode : lettres accentuées, symboles et émojis peuvent rester lisibles dans une page UTF-8. HTML5 n’impose pas de les convertir en entités. Ces options modifient les caractères échappés, pas la version de navigateur prise en charge. La référence de syntaxe HTML (en anglais) décrit les règles du texte et des attributs.

  • Texte HTML (recommandé) est le mode par défaut pour le texte entre balises, comme un paragraphe. Il échappe &, < et > et écrit les espaces insécables sous la forme &nbsp;. Les guillemets et les autres caractères Unicode restent inchangés. Par exemple, café & tea © devient café &amp; tea ©.
  • Texte avec guillemets échappe &, <, > et les deux types de guillemets, avec des noms également utilisables en XML. Choisissez-le pour le texte d’un attribut entre guillemets comme title="...", ou pour du texte XML. Les lettres accentuées, les émojis et les espaces insécables restent inchangés. Ce mode ne valide pas le XML et ne sécurise pas les URL ni le JavaScript.
  • Entités étendues convertit aussi les caractères non ASCII en références nommées ou numériques. Par exemple, café © devient caf&eacute; &copy;. Choisissez ce mode lorsqu’un autre système ou votre format source préféré exige du texte sous forme d’entités ; les pages web modernes ordinaires n’en ont pas besoin.

Le mode par défaut échappe aussi > et les espaces insécables pour un résultat cohérent, même lorsque HTML ne l’exige pas. Pour les valeurs d’attribut, utilisez Texte avec guillemets et conservez les guillemets qui encadrent la valeur dans votre balisage. Le décodage reconnaît les références nommées et numériques HTML5, quelle que soit la dernière option d’encodage utilisée.

Si le résultat n’est pas celui attendu

Encoder un texte contenant déjà des entités peut l’encoder à nouveau : &amp; devient &amp;amp;. Vérifiez si la source doit d’abord être décodée. Le décodage affiche le balisage comme du texte ; il ne supprime pas les balises. Si la copie est indisponible, sélectionnez la sortie et copiez-la avec le clavier ou le menu contextuel.

Vos données restent dans votre navigateur

Cet outil traite vos données sur votre appareil. Le texte, les fichiers ou les mots de passe saisis et les résultats produits ne sont envoyés ni à nos serveurs ni à un autre serveur.

Le chargement des pages et de leurs ressources génère des requêtes. En production, les pages chargent aussi Google Tag Manager, Cloudflare Web Analytics et les publicités AdSense ; le code des outils ne transmet ni vos saisies ni vos résultats aux services de mesure ou de publicité. Consultez notre politique de confidentialité.

Pour examiner les requêtes pendant l'utilisation de l'outil, ouvrez les outils de développement de votre navigateur, puis l'onglet Réseau. Faites un essai avec des données fictives.

Consultez Comment examiner les requêtes réseau dans Chrome, Firefox, Edge et Safari.

Pour en savoir plus

Ces références externes sont en anglais.

L'offre Premium arrive bientôt

Un abonnement Premium facultatif permettant de supprimer les publicités est prévu. Les abonnements ne sont pas encore disponibles.

Vous pouvez continuer à utiliser nos outils gratuits sans compte.