Unicodeエスケープとは
文字をUnicodeのコードポイント(文字番号)で表す記法です。ソースコードやJSONで、文字コードに依存せず安全に非ASCII文字を扱うために使われます。例えば「あ」のコードポイントは U+3042 なので、JavaScriptでは あ と書けます。
| 形式 | 「あ」 | 「😀」 | 主な用途 |
|---|---|---|---|
| \uXXXX | あ | 😀 | JSON, JavaScript, Java, C# |
| \u{...} | \u{3042} | \u{1F600} | JavaScript (ES2015+) |
| Python | あ | \U0001F600 | Python |
| CSS | \003042 | \01F600 | CSS の content など |
| U+ | U+3042 | U+1F600 | 仕様書・ドキュメント |
JSONの「あ」を日本語に戻したい
PHPの json_encode やPythonの json.dumps は、デフォルトで日本語を \uXXXX にエスケープします。APIのレスポンスやログが読めないときは、そのまま入力欄に貼り付けて「デコード」を押してください。デコードは形式を自動判別するので、\x41 や あ が混ざっていても変換できます。
なお、プログラム側でエスケープさせたくない場合は、PHPなら JSON_UNESCAPED_UNICODE、Pythonなら ensure_ascii=False を指定します。
絵文字がサロゲートペアになる理由
\uXXXX 形式は4桁(16ビット)までしか表せません。そのため U+FFFF を超える絵文字などは、2つのコード(サロゲートペア)に分けて表現します。ES2015以降のJavaScriptなら \u{1F600} のように1つで書けます。