Unicode変換 — コードポイント・UTF-8バイト
テキストとUnicodeコードポイント・エスケープ・UTF-8バイトを相互変換するツール
ブラウザー内で処理・アップロード不要
見た目の文字 8 · コードポイント 8 · UTF-16の長さ 9
変換結果
コードポイント(U+XXXX)
U+0043 U+0061 U+0066 U+00E9 U+0020 U+1F600 U+0020 U+3042
JavaScript / JSON(\uXXXX)
Caf\u00E9 \uD83D\uDE00 \u3042
ES6(\u{...})
Caf\u{E9} \u{1F600} \u{3042}
HTML 16進数(&#x...;)
Café 😀 あ
HTML 10進数(&#...;)
Café 😀 あ
UTF-8 バイト(16進数)
43 61 66 C3 A9 20 F0 9F 98 80 20 E3 81 82
UTF-16BE バイト(16進数)
00 43 00 61 00 66 00 E9 00 20 D8 3D DE 00 00 20 30 42
エンコードごとのバイト数
- UTF-8
- 14バイト
- UTF-16
- 18バイト
- EUC-KR(CP949)
- 7バイト
- EUC-KRで表せない文字が2個あります(数えていません)
EUC-KR(CP949)は韓国語の旧来のエンコードで、KS X 1001のハングル2,350音節も、CP949(UHC)拡張にあるそれ以外の現代ハングル8,822音節も2バイトです。UTF-8ではハングル1音節が3バイト、絵文字が4バイトです。
文字の一覧
| 文字 | コードポイント | UTF-8 | UTF-16 | 10進数 | 見た目の文字 |
|---|---|---|---|---|---|
| C | U+0043 | 43 | 0043 | 67 | 1 |
| a | U+0061 | 61 | 0061 | 97 | 2 |
| f | U+0066 | 66 | 0066 | 102 | 3 |
| é | U+00E9 | C3 A9 | 00E9 | 233 | 4 |
| (見えない文字) | U+0020 | 20 | 0020 | 32 | 5 |
| 😀 | U+1F600 | F0 9F 98 80 | D83D DE00 | 128512 | 6 |
| (見えない文字) | U+0020 | 20 | 0020 | 32 | 7 |
| あ | U+3042 | E3 81 82 | 3042 | 12354 | 8 |
Unicode変換ツールとは
テキストを入力すると、よく使う表記がすべて一度に表示され、それぞれコピーできます。Unicodeのコードポイント、JavaScript・JSONのエスケープ、ES6形式、HTMLの16進数・10進数の文字参照、UTF-8とUTF-16BEの生のバイト列です。ソースコードに非ASCIIの文字を安全に埋め込みたいとき、ログの \uXXXX を読みたいとき、文字化けの原因を調べたいときに使えます。
UTF-8、UTF-16、韓国語の旧来のエンコードEUC-KR(CP949)でのバイト数も比べ、コードポイントごとの一覧表も表示します。逆方向では、エスケープや16進数のバイト列をテキストに戻せます。処理はすべてブラウザー内で行い、何も保存しません。
使い方
- 方向を「テキスト → コード」か「コード → テキスト」から選びます。
- 「テキスト → コード」では入力欄に入力します。最初から例「Café 😀 あ」が入っているので、すぐに結果が表示されます。
- 「ASCIIはそのまま」のチェックを外すと、非ASCII文字だけでなくすべての文字をエスケープします。
- 必要な形式をコピーします。バイト数の比較と文字の一覧はその下にあります。
- 「コード → テキスト」では、エスケープやU+の値(混在も可)なら自動判定のまま、バイト列ならその形式を選びます。
- 復号したテキストをボタンでコピーします。
仕組み
- コードポイント:U+のあとに大文字の16進数を最低4桁(U+0041)で書き、スペースで区切ります。
- JavaScript / JSON:UTF-16のコード単位ごとに
\uXXXXを1つ書くので、U+10000以上の文字はサロゲートペアになります。ES6形式はコードポイントごとに\u{...}を1つ書きます。 - HTML:コードポイントごとに
&#x…;または&#…;を1つ書きます。 - ASCIIはそのまま:印字可能なASCII(U+0020〜U+007E)は変えずに残します。ただし、結果を曖昧さなく戻せるよう、バックスラッシュ(JavaScript)と & < > “ ’(HTML)はエスケープします。改行とタブは常にエスケープします。
- UTF-8のバイトはブラウザーのTextEncoderで作ります。UTF-16はコード単位ごとに2バイトで、上位バイトを先に書きます(ビッグエンディアン)。
- EUC-KR(CP949):すべての2バイトの組(先頭0x81〜0xFE、後続0x41〜0xFE)をブラウザーのEUC-KRデコーダーで読んで逆引き表を作ります。ASCIIは1バイトです。가〜힣の11,172音節はすべて2バイトで、KS X 1001の2,350音節とCP949(UHC)拡張の8,822音節からなります。デコーダーがKS X 1001しか知らない場合は、CP949の配置で補います。
- 見た目の文字は、ブラウザーのIntl.Segmenterによる書記素クラスター(Unicode標準附属書29)です。一覧表はコードポイントごとに1行で、複数のコードポイントでできた文字に印を付け、最初の200個を表示します。
- 復号:U+の値は4〜8桁の16進数で、U+の値の間のスペースやカンマは区切りとして扱います。U+10FFFFを超える値や対になっていないサロゲートは、位置とともに知らせます。バイト列ではスペース、カンマ、コロン、ハイフン、0x・\x・%の接頭辞を無視し、不正なUTF-8はバイトの位置とともに知らせます。
- 入力は20,000字までです。
例
| 文字 | コードポイント | JavaScript | UTF-8のバイト | UTF-8 / UTF-16 / EUC-KR |
|---|---|---|---|---|
| A | U+0041 | A(「ASCIIはそのまま」オフなら A) |
41 | 1 / 2 / 1バイト |
| é | U+00E9 | é |
C3 A9 | 2 / 2 / 表せない |
| あ | U+3042 | あ |
E3 81 82 | 3 / 2 / 2バイト |
| 中 | U+4E2D | 中 |
E4 B8 AD | 3 / 2 / 2バイト |
| 😀 | U+1F600 | 😀 |
F0 9F 98 80 | 4 / 4 / 表せない |
初期の例「Café 😀 あ」は、見た目の文字8、コードポイント8、UTF-16の長さ9です。UTF-8で14バイト、UTF-16で18バイト、EUC-KRでは7バイトで、éと絵文字は表せません。
逆方向では、自動判定で Café 😀 U+3042 が「Café 😀 あ」に、UTF-8のバイト列 43 61 66 C3 A9 が「Café」になります。
よくある質問
コードポイントとエンコードの違いは何ですか?
コードポイントはUnicodeが文字に割り当てた番号で、たとえば「あ」はU+3042です。エンコードはその番号をバイトで保存する方法です。同じ「あ」がUTF-8ではE3 81 82、UTF-16では30 42になります。韓国語の「한」(U+D55C)はUTF-8でED 95 9C、旧来の韓国語エンコードEUC-KRではC7 D1です。
絵文字が \uXXXX 2つになるのはなぜですか?
JavaScriptとJSONの文字列はUTF-16のコード単位の並びです。U+FFFFを超える文字は2単位(サロゲートペア)が必要なので、😀(U+1F600)は 😀 と書きます。ES6形式の \u{1F600} はコードポイントを直接指定するので、エスケープ1つで済みます。
絵文字1つが複数のコードポイントになるのはなぜですか?
多くの絵文字は並びでできています。家族の絵文字は人の絵文字3つをゼロ幅接合子(U+200D)2つでつないだもので、見た目は1文字でも、コードポイント5個、UTF-16で8単位、UTF-8で18バイトです。肌の色や国旗の絵文字、濁点が分かれた「か+゛」のような文字も同じなので、要約には3種類の数を表示しています。
「EUC-KRで表せない」とはどういう意味ですか?
EUC-KR(CP949)は韓国語の旧来のエンコードで、ハングル、漢字、ひらがな・カタカナ、一部の記号は含みますが、絵文字やéのような文字は含みません。それらはEUC-KRのバイト数に含めず、別に数えます。ブラウザーにEUC-KRのデコーダーがない場合、この数値は表示しません。
入力した内容は送信されますか?
いいえ。変換はすべてブラウザー内で行い、入力内容は保存も送信もされません。