100 % local — seus dados nunca saem do seu navegador

Desescapar C# — leia um literal do seu código

Decodifique um literal C# em texto: os escapes nomeados que o C# acrescenta ao Java, mais \uXXXX, \u{...} e \xNN, todos devolvidos como caracteres.

Instantâneo Privado Zero cookies

Entrada .NET Escaped

Saída Text

O que esta ferramenta faz

Ela lê o conteúdo de um literal de string C# e devolve o texto que ele representa. Decodifica as sequências que C# reconhece — \n, \r, \t, \b, \f, \v, \0 e \a — além de \uXXXX, da forma de ponto de código \u{1F600} e da hexadecimal \xNN. Um par substituto escrito como \ud83d\ude00 é recomposto no único caractere que codifica.

Qualquer outra coisa depois de uma barra invertida volta nua: \q dá q, \\ dá uma única barra.

Onde C# difere

\a e \v são as duas sequências que C# tem e Java não, o que faz delas um sinal confiável de que um literal saiu de C# e não de Java. Aqui as duas são decodificadas: \a dá o caractere de campainha U+0007 e \v a tabulação vertical U+000B. A diferença vale nos dois sentidos: C# não tem escape octal nenhum, enquanto Java e JavaScript têm. \101 é A nesses dois e aqui volta como os três caracteres 101, porque em C# \0 é uma sequência nomeada e o 101 seguinte é só texto.

O que ela não faz

A forma de oito dígitos \U0001F600 não é reconhecida e volta como o texto U0001F600; use \u{1F600} ou o par substituto. \e volta igualmente como a letra e.

\u{1F600} também não é sintaxe de C#. O C# tem \uXXXX e a forma de oito dígitos \UXXXXXXXX, e nenhuma forma com chaves; ela é aceita aqui por comodidade, exatamente como na ferramenta de Java, mas o csc a rejeitaria. Neste único caractere a ferramenta e a linguagem divergem nos dois sentidos: ela lê uma forma que C# não tem e não lê a forma que C# tem.

\x é lido como exatamente dois dígitos hexadecimais, enquanto C# aceita de um a quatro. \x4142 é um único caractere em C# mas aqui volta como A42 — uma divergência real, e justamente o motivo pelo qual os guias de estilo de C# desaconselham essa forma de comprimento variável.

Por fim, ela decodifica o conteúdo de um literal, não uma expressão C#: nada é concatenado, buracos de interpolação ficam como estão, e strings verbatim não deveriam passar por aqui.

Privado por padrão

Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.

Perguntas frequentes

O que C# decodifica que Java não decodifica?
Duas sequências: `\a`, o caractere de campainha U+0007, e `\v`, a tabulação vertical. Java não tem nenhuma das duas, então um literal que as use é próprio de C#.
Por que meu `\U0001F600` continua igual?
A forma `\U` de oito dígitos não é reconhecida: ela volta como o texto `U0001F600`. Escreva o emoji como `\u{1F600}` ou como o par substituto `\ud83d\ude00`. O par substituto é a melhor escolha: ele também é C# válido, enquanto a forma com chaves não é.
Funciona com uma string verbatim?
Não, e está certo assim. Uma string verbatim (`@"..."`) não tem sequências de escape: uma barra invertida ali é só uma barra, e passá-la por aqui corromperia o valor.

Conversores relacionados