100% ローカル — データがブラウザの外に出ることはありません

C#のエスケープ解除|あなたのコードの中のリテラルを読み取れます

C#の文字列リテラルをテキストに戻します。C#がJavaに加えた名前付きエスケープに加え、\uXXXX、\u{...}、\xNN も、すべて文字として戻ってきます。

高速 プライベート Cookieゼロ

.NET Escaped 入力

Text 出力

このツールの動作

C#の文字列リテラルの中身を読み取り、それが表すテキストを返します。C# が認識するシーケンス(\n、\r、\t、\b、\f、\v、\0、\a)に加え、\uXXXX、コードポイント形式の \u{1F600}、16進形式の \xNN を復号します。\ud83d\ude00 のように書き下されたサロゲートペアは、それが表す1文字に再合成されます。

バックスラッシュの後のそれ以外の文字は裸で返ります。\q は q、\\ はバックスラッシュ1文字になります。

C#が異なる点

\a と \v は、C# にあって Java にない2つのシーケンスです。これらを使っているリテラルは Java ではなく C# 由来だと判断できる、信頼できる手がかりになります。どちらもここで復号され、\a はベル文字 U+0007、\v は垂直タブ U+000B になります。この違いは逆方向にも働きます。Java と JavaScript にはある8進エスケープが、C# にはまったくありません。\101 はその2つでは A ですが、ここでは 101 という3文字として返ります。C# では \0 が名前付きのシーケンスであり、続く 101 はただの文字だからです。

このツールがしないこと

8桁の \U0001F600 形式は認識されず、U0001F600 という文字列として返ります。\u{1F600} かサロゲートペアを使ってください。\e も同様に、文字 e として返ります。

\u{1F600} も C# の構文ではありません。C# にあるのは \uXXXX と8桁の \UXXXXXXXX だけで、波括弧の形式は存在しません。Java のツールと同じく便宜上ここでは受け付けますが、csc は拒否します。つまりこの1文字については、ツールと言語が双方向にずれています。C# にない形式を読み、C# にある形式を読まないからです。

\x はちょうど2桁の16進数として読みますが、C# は1桁から4桁を許します。\x4142 は C# では1文字ですが、ここでは A42 として返ります。これは実際の相違であり、C# のスタイルガイドがこの可変長の形式を勧めない理由でもあります。

最後に、復号するのはリテラルの中身であって C# の式ではありません。連結は行わず、補間の穴は書かれたまま残り、逐語的文字列はそもそも通すべきではありません。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

C#が復号できてJavaが復号できないものは何ですか。
2つあります。ベル文字 U+0007 を表す `\a` と、垂直タブを表す `\v` です。Java にはどちらも存在しないため、これらを使うリテラルは C# 固有のものです。
なぜ `\U0001F600` がそのまま残るのですか。
8桁の `\U` 形式は認識されず、`U0001F600` という文字列として返ります。絵文字は `\u{1F600}` またはサロゲートペア `\ud83d\ude00` で書いてください。サロゲートペアを使うほうが適切です。こちらは C# としても有効ですが、波括弧の形式は有効ではありません。
逐語的文字列でも使えますか。
いいえ。使うべきではありません。逐語的文字列(`@"..."`)にはエスケープシーケンスが一切なく、その中のバックスラッシュはただのバックスラッシュです。ここを通すと値が壊れます。

関連ツール