100 % local — vos données ne quittent jamais votre navigateur

Déséchappement C# — lisez un littéral de votre code

Décodez un littéral C# en texte : les échappements nommés que C# ajoute à Java, plus \uXXXX, \u{...} et \xNN, tous rendus sous forme de caractères.

Instantané Privé Zéro cookie

Entrée .NET Escaped

Sortie Text

Ce que fait cet outil

Il lit le contenu d’un littéral de chaîne C# et rend le texte qu’il représente. Il décode les séquences reconnues par C# — \n, \r, \t, \b, \f, \v, \0 et \a — ainsi que \uXXXX, la forme point de code \u{1F600} et la forme hexadécimale \xNN. Une paire de substitution écrite \ud83d\ude00 est recomposée en l’unique caractère qu’elle encode.

Tout autre caractère après un antislash ressort nu : \q donne q, \\ donne un seul antislash.

Là où C# diffère

\a et \v sont les deux séquences que C# possède et que Java n’a pas, ce qui en fait un indice fiable qu’un littéral vient de C# et non de Java. Toutes deux sont décodées ici : \a donne le caractère bell U+0007, \v la tabulation verticale U+000B. La différence joue aussi dans l’autre sens : C# n’a aucun échappement octal, là où Java et JavaScript en ont un. \101 vaut A dans ces deux langages et ressort ici comme les trois caractères 101, parce qu’en C# \0 est une séquence nommée et que le 101 qui suit n’est que du texte.

Ce qu’il ne fait pas

La forme \U0001F600 à huit chiffres n’est pas reconnue et ressort comme le texte U0001F600 ; utilisez \u{1F600} ou la paire de substitution. \e ressort de même en lettre e.

\u{1F600} n’est pas davantage de la syntaxe C#. C# a \uXXXX et la forme à huit chiffres \UXXXXXXXX, et aucune forme à accolades ; elle est acceptée ici par commodité, exactement comme dans l’outil Java, mais csc la refuserait. Sur ce seul caractère, l’outil et le langage divergent donc dans les deux sens : il lit une forme que C# n’a pas, et ne lit pas celle que C# a.

\x est lu comme exactement deux chiffres hexadécimaux, alors que C# en accepte un à quatre. \x4142 est un seul caractère en C# mais ressort ici en A42 — une divergence réelle, et la raison pour laquelle les guides de style C# déconseillent cette forme à longueur variable.

Enfin, il décode le contenu d’un littéral, pas une expression C# : rien n’est concaténé, les trous d’interpolation restent tels quels, et les chaînes verbatim ne doivent pas y passer du tout.

Confidentiel par conception

Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.

Questions fréquentes

Que décode C# que Java ne décode pas ?
Deux séquences : `\a`, le caractère bell U+0007, et `\v`, la tabulation verticale. Java n’a ni l’une ni l’autre, un littéral qui les utilise est donc propre à C#.
Pourquoi mon `\U0001F600` reste-t-il intact ?
La forme `\U` à huit chiffres n’est pas reconnue : elle ressort comme le texte `U0001F600`. Écrivez plutôt l’emoji en `\u{1F600}` ou en paire de substitution `\ud83d\ude00`. La paire de substitution est le meilleur choix : elle est aussi du C# valide, alors que la forme à accolades ne l’est pas.
Fonctionne-t-il sur une chaîne verbatim ?
Non, et c’est volontaire. Une chaîne verbatim (`@"..."`) n’a aucune séquence d’échappement : un antislash y est un antislash, la faire passer ici corromprait la valeur.

Convertisseurs associés