Unicodeエスケープ変換

日本語などの文字を あ のようなUnicodeエスケープ形式に変換したり、JSONやログに出てくる \uXXXX を読める文字に戻したりできます。

Unicodeエスケープとは

文字をUnicodeのコードポイント(文字番号)で表す記法です。ソースコードやJSONで、文字コードに依存せず安全に非ASCII文字を扱うために使われます。例えば「あ」のコードポイントは U+3042 なので、JavaScriptでは あ と書けます。

形式「あ」「😀」主な用途
\uXXXXあ😀JSON, JavaScript, Java, C#
\u{...}\u{3042}\u{1F600}JavaScript (ES2015+)
Pythonあ\U0001F600Python
CSS\003042\01F600CSS の content など
U+U+3042U+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つで書けます。