ToolDeck

Échappement de chaînes

Échapper et déséchapper des chaînes pour JavaScript, Python et JSON

Essayer un exemple

Entrée

Sortie

Fonctionne localement · Sûr pour coller des secrets
Le résultat apparaîtra ici…
Mode:

Qu'est-ce que l'échappement de chaînes ?

L'échappement de chaînes est le processus qui consiste à insérer une barre oblique inverse (ou un autre marqueur) devant les caractères qui ont une signification particulière à l'intérieur d'un littéral de chaîne. Lorsque le parseur d'un langage de programmation rencontre un guillemet double à l'intérieur d'une chaîne délimitée par des guillemets doubles, il l'interprète comme la fin de la chaîne. Échapper le guillemet avec une barre oblique inverse — écrire \" au lieu de " — indique au parseur de le traiter comme un caractère littéral, et non comme un délimiteur. Tout langage utilisant des littéraux de chaîne possède des règles d'échappement, même si les séquences exactes diffèrent.

Les séquences d'échappement les plus courantes correspondent à des espaces blancs et à des caractères de contrôle qui ne peuvent pas apparaître directement dans le code source. Un saut de ligne devient \n, une tabulation devient \t, et une barre oblique inverse littérale devient \\. Ces conventions remontent au langage C (ISO/IEC 9899) et ont été adoptées par JavaScript (ECMA-262), Python, Java, Go et Rust. JSON (RFC 8259) utilise la même syntaxe mais prend en charge un ensemble de séquences plus restreint.

Le déséchappement (parfois appelé « suppression des échappements ») est l'opération inverse : convertir les séquences d'échappement en leurs caractères d'origine. Cette opération est courante lors de la lecture de fichiers journaux, de l'analyse de réponses API, ou du débogage de données qui ont été doublement échappées. Ces deux opérations sont mécaniques et sujettes aux erreurs lorsqu'elles sont effectuées manuellement, c'est pourquoi les développeurs utilisent un outil d'échappement/déséchappement lorsqu'ils travaillent avec des chaînes multilignes, des guillemets imbriqués ou des caractères Unicode.

Pourquoi utiliser un outil d'échappement de chaînes en ligne ?

Ajouter ou supprimer manuellement des barres obliques inverses est fastidieux et source d'erreurs, en particulier avec des guillemets imbriqués ou des entrées multilignes. Un outil d'échappement de chaînes dans le navigateur vous donne des résultats instantanés sans avoir à configurer un REPL ni à écrire des scripts jetables.

Conversion instantanée
Collez votre texte et obtenez immédiatement le résultat échappé ou déséchappé. Inutile d'ouvrir un terminal, de démarrer un REPL ou d'écrire un script ponctuel.
🔀
Basculer entre les formats
Passez d'un mode d'échappement à l'autre : JavaScript, Python ou JSON. Chaque langage gère différemment les guillemets simples, Unicode et les caractères de contrôle — l'outil applique automatiquement les règles appropriées.
🔒
Traitement respectueux de la confidentialité
Tout l'échappement et le déséchappement s'effectuent dans votre navigateur via JavaScript. Vos chaînes ne sont jamais envoyées à un serveur, ce qui est important lorsque vous travaillez avec des clés API, des jetons ou des données utilisateur.
📋
Aucune connexion ni installation requise
Ouvrez la page et commencez à coller. Aucun compte à créer, aucune extension à installer, et aucune bannière de consentement aux cookies ne bloque l'outil.

Cas d'utilisation de l'échappement de chaînes

Développement frontend
Échappez le contenu généré par les utilisateurs avant de l'injecter dans des attributs HTML, des scripts en ligne ou des littéraux de gabarit. Cela prévient le balisage cassé et les vecteurs XSS causés par des guillemets ou des crochets angulaires non échappés.
Intégration d'API backend
Construisez des corps de requête JSON avec des chaînes imbriquées contenant des sauts de ligne, des tabulations ou des guillemets. Un échappement correct évite un JSON malformé qui provoquerait des erreurs 400 de la part de l'API destinataire.
DevOps et configuration
Écrivez des chaînes échappées pour des fichiers de configuration JSON, des heredocs YAML ou des variables d'environnement. Une barre oblique inverse mal placée dans un ENV de Dockerfile ou une ConfigMap Kubernetes peut faire échouer un déploiement.
Assurance qualité et données de test
Générez des chaînes de test avec des caractères de contrôle imbriqués, des séquences Unicode et des guillemets imbriqués. Ces chaînes aux cas limites sont nécessaires pour vérifier que les parseurs et les sérialiseurs gèrent correctement les caractères spéciaux.
Ingénierie des données
Nettoyez les données doublement échappées provenant d'exports CSV, d'agrégateurs de journaux ou de dumps de bases de données. Les champs qui traversent plusieurs couches de sérialisation accumulent souvent des barres obliques inverses supplémentaires à supprimer.
Apprentissage et débogage
Examinez comment différents langages représentent la même chaîne. Les étudiants et les développeurs découvrant un nouveau langage peuvent comparer côte à côte l'échappement JavaScript, Python et JSON pour en comprendre les différences.

Référence des séquences d'échappement

Le tableau ci-dessous répertorie les séquences d'échappement courantes et indique si elles sont prises en charge par JavaScript, Python et JSON. Les trois langages partagent le même ensemble de base (saut de ligne, tabulation, barre oblique inverse, guillemet double), mais divergent sur les guillemets simples, les échappements hexadécimaux et la notation Unicode étendue.

SéquenceSignificationJavaScriptPythonJSON
\nNewline (LF)YesYesYes
\rCarriage returnYesYesYes
\tTabYesYesYes
\\BackslashYesYesYes
\"Double quoteYesYesYes
\'Single quoteYesYesNo
\bBackspaceYesYesYes
\fForm feedYesYesYes
\vVertical tabYesYesNo
\0Null characterYesYesNo
\xNNHex byteYesYesNo
\uNNNNUnicode (BMP)YesYesYes
\u{N..}Unicode (full)YesNoNo

JavaScript vs Python vs JSON : comparaison de l'échappement

Bien que ces trois formats partagent la même syntaxe à base de barre oblique inverse, ils diffèrent quant aux séquences valides et à la gestion des cas limites. Choisir le mauvais mode produit une sortie qui semble correcte mais échoue à l'analyse.

JavaScript
Prend en charge les échappements hexadécimaux \x, \u{...} pour la plage Unicode complète (au-delà du BMP), \v pour la tabulation verticale et \0 pour le caractère nul. Les guillemets simples et doubles peuvent tous deux être échappés. Les littéraux de gabarit (backticks) évitent la plupart des besoins d'échappement.
Python
Mêmes séquences de base que JavaScript, plus les échappements hexadécimaux \x et \N{name} pour les caractères Unicode nommés. Les chaînes brutes (r"...") désactivent entièrement le traitement des échappements. Les guillemets simples et doubles sont tous deux échappables.
JSON
Le format le plus restrictif. Seuls \" (guillemet double), \\, \/, \n, \r, \t, \b, \f et \uNNNN sont valides. Pas d'échappement de guillemet simple (les chaînes JSON utilisent toujours des guillemets doubles). Pas d'échappements hexadécimaux, ni \v, ni \0. Tout caractère de contrôle (U+0000 à U+001F) doit utiliser la notation \uNNNN.

Exemples de code

Exemples d'échappement et de déséchappement de chaînes en JavaScript, Python, Go et en ligne de commande.

JavaScript
// Escape a string with special characters
const raw = 'Line 1\nLine 2\tTabbed "quoted"';
const escaped = JSON.stringify(raw);
// → '"Line 1\\nLine 2\\tTabbed \\"quoted\\""'

// Unescape a JSON string value
const input = '"Hello\\nWorld"';
const unescaped = JSON.parse(input);
// → "Hello\nWorld" (actual newline character)

// Template literals don't need quote escaping
const tpl = `She said "hello"`;
// → 'She said "hello"' — no backslashes needed

// Escape for use inside a RegExp
const query = 'price: $5.00 (USD)';
const safe = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
// → "price: \\$5\\.00 \\(USD\\)"
Python
# Escape with repr() — shows escape sequences
raw = "Line 1\nLine 2\t'quoted'"
print(repr(raw))
# → "Line 1\nLine 2\t'quoted'"

# Raw strings skip escape processing
path = r"C:\Users\name\Documents"
print(path)
# → C:\Users\name\Documents (backslashes kept literal)

# JSON escaping with json module
import json
data = 'He said "hello\nworld"'
escaped = json.dumps(data)
# → '"He said \\"hello\\nworld\\""'

# Unicode escaping
text = "Caf\u00e9"  # → "Café"
print(text.encode('unicode_escape').decode())
# → "Caf\\xe9"
Go
package main

import (
    "fmt"
    "strconv"
    "encoding/json"
)

func main() {
    // strconv.Quote adds escape sequences and wraps in quotes
    raw := "Line 1\nLine 2\t\"quoted\""
    fmt.Println(strconv.Quote(raw))
    // → "\"Line 1\\nLine 2\\t\\\"quoted\\\"\""

    // strconv.Unquote reverses it
    unescaped, _ := strconv.Unquote(`"hello\nworld"`)
    fmt.Println(unescaped)
    // → hello
    //   world

    // JSON marshal handles escaping automatically
    b, _ := json.Marshal("tabs\there & \"quotes\"")
    fmt.Println(string(b))
    // → "tabs\there \u0026 \"quotes\""
}
CLI (Bash)
# Use $'...' syntax for escape sequences in bash
echo $'Line 1\nLine 2\tTabbed'
# → Line 1
#    Line 2	Tabbed

# printf interprets escape sequences
printf 'Path: C:\\Users\\name\n'
# → Path: C:\Users\name

# Use jq to escape a string for JSON
echo 'He said "hello"' | jq -Rs .
# → "He said \"hello\"\n"

# Unescape JSON string with jq
echo '"Line 1\\nLine 2"' | jq -r .
# → Line 1
#    Line 2

Questions fréquentes

Quelle est la différence entre l'échappement et l'encodage ?
L'échappement ajoute des barres obliques inverses devant les caractères spéciaux dans un littéral de chaîne afin que le parseur du langage les traite comme des données et non comme de la syntaxe. L'encodage transforme l'intégralité de la chaîne en une représentation différente — par exemple, l'encodage Base64 convertit les données binaires en texte ASCII, et l'encodage URL remplace les caractères non sûrs par des séquences pourcent-hexadécimales. L'échappement préserve la lisibilité ; l'encodage change entièrement le format.
Pourquoi ma chaîne comporte-t-elle des doubles barres obliques inverses (\\\\) au lieu de simples ?
Les doubles barres obliques inverses apparaissent lorsqu'une chaîne est échappée deux fois. Cela se produit fréquemment lorsque des données traversent plusieurs couches de sérialisation — par exemple, une valeur JSON stockée à l'intérieur d'une autre chaîne JSON, ou une ligne de journal encodée en JSON avant d'être écrite dans un fichier. Pour corriger cela, déséchappez la chaîne couche par couche jusqu'à retrouver le contenu d'origine.
Comment échapper une chaîne pour JSON en JavaScript ?
Utilisez JSON.stringify(). Cette fonction entoure la chaîne de guillemets doubles et échappe tous les caractères requis par JSON : les barres obliques inverses, les guillemets doubles, les sauts de ligne, les tabulations et les caractères de contrôle inférieurs à U+0020. Si vous souhaitez uniquement le contenu interne sans les guillemets environnants, utilisez JSON.stringify(str).slice(1, -1).
Les chaînes JSON peuvent-elles contenir des guillemets simples ?
Non. La spécification JSON (RFC 8259) exige que toutes les chaînes soient délimitées par des guillemets doubles. Les guillemets simples ne sont pas des délimiteurs de chaîne valides en JSON. Bien que certains parseurs tolérants les acceptent, tout parseur JSON conforme au standard rejettera une chaîne encadrée de guillemets simples. Si votre chaîne contient un caractère guillemet simple, il peut apparaître tel quel à l'intérieur d'une chaîne JSON entre guillemets doubles — aucun échappement n'est nécessaire.
Qu'est-ce qu'une chaîne brute en Python ?
Une chaîne brute (préfixée par r, comme r"C:\Users\name") indique à l'interpréteur Python de traiter les barres obliques inverses comme des caractères littéraux plutôt que comme des marqueurs d'échappement. C'est utile pour les chemins de fichiers Windows, les expressions régulières et toute chaîne où les barres obliques inverses doivent être préservées. Notez qu'une chaîne brute ne peut pas se terminer par un nombre impair de barres obliques inverses, car la barre finale échapperait le guillemet fermant.
Comment échapper des caractères Unicode en JavaScript ?
JavaScript prend en charge deux formes d'échappement Unicode. La syntaxe \uNNNN gère les caractères du Plan Multilingue de Base (U+0000 à U+FFFF), comme \u00e9 pour « e accent aigu ». Pour les caractères hors du BMP (emoji, scripts rares), utilisez \u{NNNNN} avec jusqu'à six chiffres hexadécimaux — par exemple, \u{1F600} pour l'emoji visage souriant. La forme \u{'} a été introduite dans ES2015.
L'échappement de chaînes est-il lié à la sécurité (XSS, injection SQL) ?
L'échappement au niveau du langage et l'échappement à des fins de sécurité servent des objectifs différents, mais le principe est le même : empêcher les caractères spéciaux d'être interprétés comme du code. Pour la prévention du XSS, vous échappez les entités HTML (<, >, &). Pour l'injection SQL, vous utilisez des requêtes paramétrées plutôt qu'un échappement manuel. Cet outil gère l'échappement de chaînes au niveau du langage (séquences à barre oblique inverse), pas l'échappement HTML ou SQL.