piapia123
ja

Unicode エスケープと復元

エンコード・暗号

処理はすべてブラウザ内で完結します。データは送信されません

入力
出力

日本語や中国語、emoji などの非 ASCII 文字をエスケープ表記に変換し、逆にエスケープを文字へ戻します。3つの形式にはそれぞれ使いどころがあります:\uXXXX は JS / Java / C# の文字列リテラルや .properties ファイルで、\xXX は UTF-8 のバイト列を表し、Python・C・PHP でよく見る書き方です(\xE6\x97\xA5 が「日」です);&#xXXXX; は HTML の数値実体参照です。emoji は標準のサロゲートペア \uD83D\uDE00 として出力し、Java や .properties ファイルが認識しない \u{1F600} は使いません。エンコードとデコードを厳密に逆の関係にするため、バックスラッシュと & も併せてエスケープします —— そうしないと、元のテキストに元からある \u0041 がデコード時にエスケープシーケンスと解釈され、黙って文字 A に変わってしまいます。

機能

  • 双方向変換:日本語・中国語・emoji・非 ASCII 文字 ⇄ エスケープ表記
  • 3つの形式:\uXXXX(JS / Java)、\xXX(UTF-8 バイト)、&#xXXXX;(HTML 数値実体参照)
  • デコードは3つの形式を同時に認識し、1つのテキストに混在していても復元できます
  • emoji は標準のサロゲートペア \uD83D\uDE00 で出力。Java や .properties ファイルでそのまま使えます
  • エンコード時にバックスラッシュと & も併せてエスケープし、「デコード(エンコード(x)) === x」を厳密に成立させます
  • デコードは \u{1F600} と \U0001F600 の2つのコードポイント表記も認識します
  • 認識できないエスケープはそのまま保持し、エラーも出さず捨てもしません

使い方

  1. 方向を選びます:エンコードかデコード
  2. エンコード時は目的のエスケープ形式を選びます
  3. 内容を入力欄に貼り付けると、結果がリアルタイムで表示されます
  4. 「コピー」で結果を取り出せます

よくある質問

\xXX 形式で日本語が3バイトになるのはなぜですか?
\xXX が表すのは 1 バイトであり、日本語は 1 バイトに収まらないため、まず UTF-8 で符号化する必要があるからです:日 = E6 97 A5 なので \xE6\x97\xA5 と書きます。これはまさに Python の bytes や C の文字列リテラルでの表し方です。デコードも同じ規則で処理するので、復元できるかどうかは、そのバイト列自体が有効な UTF-8 かどうかで決まります。
出力に \u0026 や \u005C が増えるのはなぜですか?
エンコードとデコードを厳密に逆の関係にするためです。元のテキストには \u0041 や 中 が元から書かれていることがあり、バックスラッシュと & をエスケープしないと、デコード時にそれらを本物のエスケープシーケンスとみなし、黙って誤った結果を返してしまいます。エスケープ後の出力は JS・Java・.properties のいずれでも元の文字に正しく復元されます。
emoji が1つではなく2つの \u になるのはなぜですか?
U+1F600 は基本多言語面(BMP)の外にあり、UTF-16 ではサロゲートペア \uD83D\uDE00 として書く必要があります。Java や .properties ファイルはこの書き方しか認識せず、\u{1F600} は認識しません。そのためエンコードはペアの形で出力し、逆にデコード時は隣り合うペアのエスケープが自動で1文字に結合されます。
デコード時に壊れたエスケープがあるとエラーになりますか?
いいえ。3つの形式を同時に認識し、認識できないもの(途中で切れた \uD8、範囲外の �、\n のような他言語のエスケープ)はすべてそのまま残します。実際のテキストに無関係なエスケープが数個混じっているのは普通のことで、それで全体をエラーにすると、正常な部分まで受け取れなくなってしまいます。

関連ツール

HTML 実体参照

エンコード・暗号

< > & と引用符を HTML 実体参照に変換し、文字へ戻します。デコードは1回だけで、&amp;lt; は山括弧ではなく &lt; になります。すべてブラウザ内で処理します。

Base64 変換

エンコード・暗号

テキストを Base64 に変換し、Base64 からテキストへ戻します。日本語や中国語、emoji も UTF-8 として正しく処理。すべてブラウザ内で完結し、内容は送信しません。

簡体字・繁体字変換

テキスト処理

中国語を簡体字と繁体字の間で相互変換します。常用語は語単位で置換し、残りは最も一般的な字形を採るため、一部は人の確認が必要です。

URL エンコード

エンコード・暗号

日本語や中国語、空白・記号を %XX にエスケープし、復元します。URL 全体とパラメータ値では方式が異なり、間違えるとリンクが開けません。ブラウザ内で処理します。

JWT デコード

エンコード・暗号

JWT を header・payload・signature に分け、iat や exp を読める日時に変換します。署名は検証せず、その旨を出力に明記します。すべてブラウザ内で処理します。

ハッシュ計算

エンコード・暗号

MD5・SHA-1・SHA-256・SHA-512 のダイジェストを計算します。日本語や中国語も UTF-8 バイトで計算し openssl や sha256sum と一致。ブラウザ内で処理します。