Encodeur / Decodeur d'entites HTML/ & < > "
Encodez les caracteres speciaux HTML en entites et decodez les entites nommees/numeriques — essentiel pour la prevention XSS.
Texte brut / HTML
0 caractères
Entités HTML
0 caractères
Entités HTML courantes
&&<<>>""''©©®®™™ ——……«»«»Cet outil a-t-il résolu votre problème ?
Qu'est-ce qu'un outil d'encodage/décodage HTML
Un outil d'encodage/décodage HTML convertit entre le texte brut et les entités HTML. Les entités HTML sont des codes spéciaux commençant par & et finissant par ; pour afficher en toute sécurité les caractères spéciaux.
Cas d'utilisation courants
Afficher des extraits de code : encoder < et > en < et >. Prévenir les attaques XSS : encoder les entrées utilisateur avant l'affichage. Modèles d'email : afficher les caractères spéciaux en toute sécurité.
Exemples de code
JavaScript (Browser)
// Encode using a temporary DOM element (browser only)
function htmlEncode(str) {
const div = document.createElement('div');
div.appendChild(document.createTextNode(str));
return div.innerHTML;
}
// Decode
function htmlDecode(str) {
const div = document.createElement('div');
div.innerHTML = str;
return div.textContent ?? div.innerText;
}
// Manual encode (works in Node.js too)
const escapeHtml = (s) => s
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');Python
import html
# Encode (escape)
html.escape('<script>alert("xss")</script>')
# '<script>alert("xss")</script>'
# Encode including single quotes
html.escape("it's", quote=True)
# 'it's'
# Decode (unescape)
html.unescape('<b>Hello & World</b>')
# '<b>Hello & World</b>'Go
import "html"
// Encode
html.EscapeString("<script>alert('xss')</script>")
// "<script>alert('xss')</script>"
// Decode
html.UnescapeString("<b>Hello & World</b>")
// "<b>Hello & World</b>"
// In templates (auto-escaped)
import "html/template"
t := template.Must(template.New("").Parse(
"<p>{{.}}</p>"))
t.Execute(os.Stdout, "<b>Hello</b>")
// <p><b>Hello</b></p>PHP / Twig
<?php
// Encode
htmlspecialchars('<b>Hello</b> & "World"', ENT_QUOTES, 'UTF-8');
// '<b>Hello</b> & "World"'
// Decode
htmlspecialchars_decode('<b>Hello</b>');
// '<b>Hello</b>'
// All HTML entities (including named ones)
htmlentities('© 2025 — Café', ENT_QUOTES, 'UTF-8');
// '© 2025 — Café'
// Twig (auto-escaped by default)
// {{ user_input }} ← auto-escaped
// {{ user_input|raw }} ← raw HTML (unsafe!)Questions frequemment posees
Pourquoi avons-nous besoin de l'encodage d'entites HTML ?
Certains caracteres ont une signification speciale en HTML : < et > pour les balises, & pour les entites, " pour les valeurs d'attributs. L'insertion d'entrees utilisateur brutes dans le HTML permet au navigateur de les interpreter comme une structure HTML, creant des vulnerabilites XSS (cross-site scripting). Les echapper en <, >, &, " fait que le navigateur les affiche comme du texte au lieu d'executer du code.
Quelle est la difference entre les entites HTML nommees et numeriques ?
Les entites nommees utilisent des noms memorables : & (&), © (©), (espace insecable). Les entites numeriques utilisent le point de code Unicode : decimal © ou hexadecimal © (les deux signifient ©). Les entites nommees n'existent que pour les caracteres definis dans la specification HTML ; les entites numeriques peuvent representer n'importe quel caractere Unicode.
Quels sont les 5 caracteres les plus importants a encoder en HTML ?
Les 5 essentiels : & → & (doit etre encode en premier, sinon les autres entites seront corrompues), < → <, > → >, " → " (dans les valeurs d'attributs), ' → ' ou ' (dans les valeurs d'attributs). Les autres caracteres (CJK, ©, € etc.) n'ont pas besoin d'etre encodes — les navigateurs modernes supportent pleinement UTF-8.
Qu'est-ce que et quand l'utiliser ?
est un espace insecable (U+00A0). Contrairement aux espaces normaux : 1) Le navigateur ne coupera pas la ligne a un . 2) Plusieurs ne sont pas reduits a un seul (le HTML reduit normalement les espaces consecutifs). Utilisez-le pour un espacement fixe — par exemple entre un nombre et une unite '100 km', ou pour empecher une expression de se couper entre les lignes.
React et Vue encodent-ils automatiquement le contenu HTML ?
Oui. React JSX et les templates Vue echappent toutes les valeurs interpolees par defaut. Dans React, <div>{userInput}</div> encode automatiquement les caracteres speciaux — seul dangerouslySetInnerHTML contourne cela (a utiliser avec une extreme prudence). Dans Vue, {{ userInput }} est automatiquement echappe ; seule la directive v-html insere du HTML brut.
Quelle est la difference entre l'encodage HTML et l'encodage URL ?
L'encodage d'entites HTML (&, <, etc.) echappe les caracteres speciaux dans le contexte d'un document HTML pour eviter les ambiguites d'analyse HTML. L'encodage URL (%26, %3C, etc.) echappe les caracteres non-ASCII et reserves dans le contexte URL/URI. Ils ont des objectifs differents. Pour un attribut href : d'abord encoder l'URL de la valeur, puis encoder l'ensemble en entites HTML.