テキストをソースコード用のUnicodeエスケープにする

propertiesファイルやJSON文字列、HTML実体参照向けに、非ASCIIテキストをエスケープ表記へ・エスケープから読み戻します。

このガイドで使う道具

やりたいこと

非ASCIIのテキストをそのまま持てない形式があります。Java の `.properties` は歴史的に \uXXXX 前提、JSON 文字列はエスケープで可搬性が上がり、HTML の数値実体参照は文字化けに強い形式です。逆に、\u3042 が並ぶログを日本語として読み戻す方向も同じくらい使います。

使い方

まず方向を選びます。エスケープでは出力先に合う形式を選びます。JavaScript/Java系は \uXXXX、ES6のコードポイントは \u{…}、HTMLは &#x…; 実体参照、バイト列を扱う道具にはUTF-8の \xNN です。既定では非ASCIIだけを変換し、全文字への切替もできます。

  • 絵文字などU+FFFFを超える文字は、形式に応じてサロゲートペアか \u{…} 形式が自動で選ばれます。
  • 逆変換は4形式と10進数実体参照を読むので、混在した入力も復号できます。
  • すべてブラウザ内で変換するため、ソースの断片を安心して貼れます。

具体例

「こんにちは」を \uXXXX 形式でエスケープすると \u3053\u3093\u306b\u3061\u306f になり、.properties に貼れる形です。これを逆変換側に貼ると「こんにちは」に戻ります。

注意点

\xNN の連続はUTF-8として復号し、UTF-8として成立しないバイト列はLatin-1文字として表示します(エラーにはしません)。普通の文字列がたまたまエスケープに見える場合の区別はできません。「a\u0041test」では \u0041 が必ず復号されます。入力は10万文字までです。