Unicodeエスケープ変換
文字列を \u3042、\u{1F38C}、あ、U+3042、Python、CSS のエスケープ表記に変換し、混ざった表記も文字列に戻します。文字ごとのコードポイントと UTF-8 のバイト列も一覧で見られます。
読み込み中…
使い方と仕様
変換先は、JavaScript / JSON の \uXXXX(絵文字などは \uD83C\uDF8C のように2つ続く)、ES6 の \u{1F38C}、HTML の 🎌(10進)と 🎌(16進)、U+1F38C の列、Python の \u3042 と \U0001F38C、CSS の \3042 から選べます。「ASCII 以外だけ」を選ぶと英数字や記号はそのまま、「すべての文字」を選ぶと ASCII も変換します。U+ の列は、ASCII と混ぜると区切りが分からなくなるので、常にすべての文字を変換します。16進の英字は大文字で出します。
「ASCII 以外だけ」でも、読み戻したときに別の意味になる \ と &# と U+(後ろに16進数が続くとき)は変換します。たとえば C:\temp の \ が、\t(タブ)と読まれるのを避けるためです。CSS の \3042 は、直後の文字が 0〜9・a〜f・空白のとき、区切りの空白を1つ足します(あ の後ろに a が来れば「\3042 a」)。読み戻すときは、この空白を1つだけ読み捨てます。
文字列に戻す側は、形式が混ざっていても読みます。\uXXXX、\u{…}、\UXXXXXXXX、\xHH、&#…; と &#x…;、U+XXXX(空白かカンマ区切り)、CSS の \ + 1〜6桁の16進数のほか、\n \t \r \b \f \v \0 \" \' \\ \/ も戻します。\b と \f は、直後が何であっても JSON と同じ制御文字として読むため、小文字の CSS エスケープ \b・\f は区別できません(大文字の \B・\F は CSS として読みます)。& のような名前つきの参照は戻しません。
読めない部分は元の表記のまま残し、位置と理由を出します。桁の足りない \u12、直後に下位サロゲートがない \uD83C、U+10FFFF を超える \u{110000}、; のない あ などです。一覧表には、コードポイント、UTF-8 のバイト列、UTF-16 の並び、文字の種類を出します。か + 結合の濁点(U+304B U+3099)と が(U+304C)、全角の A(U+FF21)と半角の A(U+0041)は、コードポイントで見分けられます。文字の種類は Unicode のバージョンに依存し、お使いのブラウザの判定です。
よくある質問
- 絵文字が \uD83C\uDF8C と2つに分かれるのはなぜですか。
- JavaScript の文字列は UTF-16 で、U+FFFF を超える文字(多くの絵文字)を、上位と下位の2つのコードユニット(サロゲートペア)で表すためです。🎌 は U+1F38C で、\uD83C\uDF8C です。1文字として書きたいときは ES6 の \u{1F38C} を選んでください。
- 見た目が同じなのに、一致しない文字列を調べられますか。
- 調べたい文字列を入れて、一覧表のコードポイントを比べてください。「が」が U+304C の1文字か、U+304B と U+3099(結合文字の濁点)の2文字か、全角 U+FF21 か半角 U+0041 かが分かります。互換正規化(NFKC)で別の文字になる文字には、その変換先も出します。