100 % locale — i tuoi dati non lasciano mai il tuo browser

Unescape C# — leggi un literal dal tuo codice

Decodifica un literal C# in testo: gli escape con nome che C# aggiunge a Java, più \uXXXX, \u{...} e \xNN, tutti restituiti come caratteri.

Istantaneo Privato Zero cookie

Input .NET Escaped

Output Text

Cosa fa questo strumento

Legge il contenuto di un literal di stringa C# e restituisce il testo che rappresenta. Decodifica le sequenze riconosciute da C# — \n, \r, \t, \b, \f, \v, \0 e \a — insieme a \uXXXX, alla forma per punto di codice \u{1F600} e a quella esadecimale \xNN. Una coppia surrogata scritta per esteso come \ud83d\ude00 viene ricomposta nell’unico carattere che codifica.

Qualsiasi altra cosa dopo una barra rovesciata torna nuda: \q dà q, \\ dà una sola barra.

Dove C# è diverso

\a e \v sono le due sequenze che C# ha e Java no, il che le rende un indizio affidabile del fatto che un literal viene da C# e non da Java. Qui vengono decodificate entrambe: \a dà il carattere campanello U+0007, \v la tabulazione verticale U+000B. La differenza vale anche nel verso opposto: C# non ha alcun escape ottale, mentre Java e JavaScript sì. \101 vale A in quei due e qui torna come i tre caratteri 101, perché in C# \0 è una sequenza con nome e il 101 che segue è solo testo.

Cosa non fa

La forma a otto cifre \U0001F600 non è riconosciuta e torna come il testo U0001F600; usa \u{1F600} o la coppia surrogata. Anche \e torna come la lettera e.

\u{1F600} non è sintassi C# nemmeno lei. C# ha \uXXXX e la forma a otto cifre \UXXXXXXXX, e nessuna forma con parentesi graffe; qui è accettata per comodità, esattamente come nello strumento Java, ma csc la rifiuterebbe. Su questo unico carattere strumento e linguaggio divergono in entrambe le direzioni: legge una forma che C# non ha, e non legge quella che C# ha.

\x è letta come esattamente due cifre esadecimali, mentre C# ne accetta da una a quattro. \x4142 è un solo carattere in C# ma qui torna come A42: una divergenza reale, e proprio il motivo per cui le guide di stile C# sconsigliano quella forma a lunghezza variabile.

Infine, decodifica il contenuto di un literal, non un’espressione C#: nulla viene concatenato, i buchi di interpolazione restano come sono, e le stringhe verbatim non dovrebbero passare di qui.

Privato per progettazione

Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.

Domande frequenti

Che cosa decodifica C# e Java no?
Due sequenze: `\a`, il carattere campanello U+0007, e `\v`, la tabulazione verticale. Java non ha né l’una né l’altra, quindi un literal che le usa viene da C#.
Perché il mio `\U0001F600` resta intatto?
La forma `\U` a otto cifre non è riconosciuta: torna come il testo `U0001F600`. Scrivi l’emoji come `\u{1F600}` o come coppia surrogata `\ud83d\ude00`. La coppia surrogata è la scelta migliore: è anche C# valido, mentre la forma con parentesi graffe non lo è.
Funziona su una stringa verbatim?
No, ed è giusto così. Una stringa verbatim (`@"..."`) non ha alcuna sequenza di escape: una barra rovesciata lì è solo una barra, e farla passare di qui corromperebbe il valore.

Convertitori correlati