UnicodeからUTF-8への変換ツール

文字通りのUnicodeテキストを、プログラミング言語がソースコードに埋め込む\u00E9や\u{1F600}のエスケープ構文に変換します。または、エスケープされた文字列を貼り付けて元の文字に復元することもできます。BMP文字(4桁エスケープ)や絵文字のような補助面(可変長の\u{...})に対応しています。

UnicodeとUTF-8エスケープの変換方法

  1. 1

    方向を選択

    文字を`\u`エスケープにエンコードするか、エスケープされた文字列をテキストにデコードします。

  2. 2

    入力を貼り付け

    エンコードにはプレーンテキスト、デコードには`\uXXXX`または`\u{XXXXX}`シーケンスを含む文字列。

  3. 3

    出力を読む

    BMP文字は`\u0041`形式の4桁エスケープを生成し、U+FFFFを超える文字はES6の`\u{...}`形式を使います。

  4. 4

    コードにコピー

    結果をJavaScript文字列、JSONリテラル、設定ファイル、テストフィクスチャに貼り付けます。

複数言語でのエスケープ構文

言語によって同じ考えの書き方は異なります。コンバーターは一般的なJavaScript/JSON形式を出力しますが、同じ文字を別の場所で書くときに変換する先は次のとおりです。

言語別のエスケープ構文

言語 BMP (<= U+FFFF) 補助 (> U+FFFF)
JavaScript \u00E9 \u{1F600} (ES6+)
JSON \u00E9 サロゲートペア \uD83D\uDE00
Python \u00e9 \U0001F600
Java \u00e9 サロゲートペア
C / C++ \u00e9 \U0001F600
Ruby \u00e9 \u{1F600}
Rust \u{00e9} \u{1F600}
HTMLエンティティ &#xE9; &#x1F600;
CSS \0000e9 \1F600

絵文字に長い形式が必要な理由

基本多言語面(BMP)はU+0000からU+FFFFまでをカバーし、すべてが1つの16ビット単位に収まります。これは古い\uXXXX構文が想定していたものです。絵文字の多くは面1(U+1F000以降)にあり、4桁の16進数には収まりません。選択肢は2つ:

  1. ES6の波括弧、\u{1F600}は任意の長さを受け付けます。
  2. UTF-16サロゲートペア、1文字につき2つの\uXXXXエスケープ。JSONパーサーはこれを受け入れ、JSONエンコーダーも通常これを出力します。

どちらも同じ文字列にデコードされますが、サロゲートペアは壊れやすく、上位と下位のサロゲートの間で文字列を切ると無効なUTF-16になります。

よくある質問

16進数4桁はU+FFFFが上限です。絵文字はU+1F000から始まるため、ES6の波括弧形式\u{...}が必要です。古い環境に縛られている場合はUTF-16サロゲートペアを使います。このツールはU+FFFFを超えるものすべてに波括弧を使用します。

ペアとしてはできません。デコーダーは波括弧形式\u{1F600}と4桁の\uXXXXエスケープを解釈しますが、UTF-16サロゲートペア(JSONが使う2エスケープ形式)を1つの絵文字に再結合はしません。各半分は個別にデコードされ、元には戻りません。U+FFFFを超えるものには波括弧形式\u{...}を貼り付けてください。これはエンコーダーが出力する形式そのものです。

いいえ。\u00E9のようなエスケープはコードポイントU+00E9を表し、UTF-8バイト列(C3 A9)ではありません。生のバイト表示には、UTF-8バイトをHEXで示すUnicode検索ツールを使ってください。

変換はこのリクエスト内でサーバー側で行われますが、何も保持されません。ログも、変換した文字列の保存もありません。

関連ツール

このツールは他の言語でも利用できます