ASCII・Unicodeコード表と文字⇄コードポイント変換

U+0041は「A」、U+3000(10進で12288)は全角スペース。文字列を貼り付けると1文字ごとにコードポイント・10進・UTF-8バイト列(あ=0xE3 0x81 0x82 など)・文字種別を一覧表示し、U+3042・\u3042・あ からの復元や、全角スペース・NBSPなど紛らわしい文字の検出もできます。

1文字ずつコードポイント・UTF-8バイト列・UTF-16コード単位・種別を表示します(先頭500文字まで)。全角スペース・NBSP・ゼロ幅スペースなど見た目が同じ紛らわしい文字は背景色つきで強調します。

対応形式: U+3042 / あ / \u{1F600} / あ(10進実体参照)/ あ(16進実体参照)/ 0xE3 0x81 0x82(UTF-8バイト列・16進)。1行がすべて16進バイトのときはUTF-8として結合デコードします。

ログに 0xE3 だけが出ていて、何の文字なのか分からない。 見た目は空白なのに、スペースで区切っても分かれてくれない。 同じ「あ」のはずなのに、UTF-8 と UTF-16 で並ぶ数字が違う。 このツールは、貼り付けた文字を1文字ずつ分解してコードポイント・UTF-8 バイト・UTF-16 コード単位を表にし、逆にコードやバイト列から文字へ戻すこともできます。

使い方

  1. 上の欄に調べたい文字列を貼り付けます。1文字が1行になり、コードポイント(U+3042 の形)、10進、UTF-8 バイト、UTF-16、種別が並びます。
  2. 最初から入っている例文には、半角スペース・NBSP・全角スペース・ゼロ幅スペースが混ざっています。見た目が同じで中身が違う文字は、行に色が付きます。

ここまでが文字からコードへの向きです。次が逆向きです。

  1. 「コード → 文字に復元」の欄には、1行に1件ずつ入力します。U+3042、\u{1F600}、あ、0xE3 0x81 0x82 のような形式を行ごとに自動で判定します。

下には ASCII コード表(0〜127)もあり、制御文字の略称と意味を確認できます。

16進のバイト列は1バイトずつ区切って入れます。e3 80 80 やカンマ区切りでも読めました。e38080 のような区切りなしや、<0xe3><0x80><0x80> のような山括弧つきは、バイト列として読まれず文字列扱いになりました。山括弧を外してスペースで区切ってから貼り付けてください。

仕組み・計算式

ASCII は 7 ビットで 0〜127 の 128 文字を表す規格です(ANSI X3.4、国際規格では ISO 646)。0〜31 と 127 が制御文字、32 が空白、33〜126 が印字できる文字です。Unicode の U+0000〜U+007F は ASCII と同じ並びなので、英数字は ASCII の値がそのままコードポイントになります。

Unicode は文字に番号(コードポイント)を割り当てる仕組みで、The Unicode Standard が定義しています。番号の範囲は U+0000〜U+10FFFF です。この番号をバイト列にするのが符号化方式で、ツールの表には UTF-8 と UTF-16 を出しています。

UTF-8(RFC 3629)は、コードポイントの大きさで1〜4バイトを使い分けます。

ここから先に日本語の文字が入ります。

先頭バイトの上位ビットで文字のバイト数が決まり、続きのバイトは 10 で始まります。3バイト文字の先頭は 0xE0〜0xEF で、ひらがな・カタカナ・全角記号の先頭が 0xE3 になるのはこの範囲だからです。

UTF-16(RFC 2781)は、U+FFFF 以下の文字を16ビット1つで表し、コードポイントがそのままコード単位になります。U+10000 以上はサロゲートペア(2コード単位)にします。まず 0x10000 を引きます。残りの上位10ビットに 0xD800 を足すと前半(上位サロゲート)、下位10ビットに 0xDC00 を足すと後半(下位サロゲート)です。

JavaScript の文字列は UTF-16 のコード単位で数えるため、サロゲートペアの文字は length が 2 になります。ツールは Array.from() で分割し、TextEncoder で UTF-8 を取り出します。

計算例

次の値は手計算とあわせて、Node.js(Buffer、TextEncoder、codePointAt)でも確かめました。

例1 「あ」(U+3042) 2進数にすると 0011 0000 0100 0010 です。3バイトの型 1110xxxx 10xxxxxx 10xxxxxx に上から詰めると 11100011 10000001 10000010、16進で E3 81 82 になります。UTF-16 は U+3042 の1コード単位です。

例2 全角スペース(U+3000) 0011 0000 0000 0000 を同じ型に詰めると E3 80 80 です。先頭の E3 は「あ」と同じです。冒頭の <0xe3><0x80><0x80> は、山括弧を外して 0xe3 0x80 0x80 にして復元欄に入れると、全角スペース1文字に戻りました。

例3 「𠮷」(U+20BB7) 境界値の例です。U+FFFF を超えるので、UTF-8 は4バイトで F0 A0 AE B7 です。UTF-16 は 0x20BB7 − 0x10000 = 0x10BB7 から、上位10ビット 0x42 と下位10ビット 0x3B7 を取り出します。0xD800 + 0x42 = D842、0xDC00 + 0x3B7 = DFB7 で、サロゲートペアは D842 DFB7 です。

正直なところ、サロゲートの計算は紙に書かないと途中で迷います。ツールに貼って答え合わせするほうが速いです。

よくある間違い

1. NBSP(U+00A0)を普通のスペース(U+0020)と同じだと思う 見た目は同じでも別の文字です。UTF-8 では普通のスペースが 20 の1バイト、NBSP が C2 A0 の2バイトです。"A B" と "A B" を比べると、=== は false で、バイト数は 4 と 3 でした。split(" ") でも NBSP の入った文字列は分かれません。

Web ページからのコピーで紛れ込みやすいです。貼り付けて、種別に「改行禁止スペース(NBSP)」と出るか見てください。JavaScript の正規表現 \s は NBSP と全角スペースには一致しましたが、ゼロ幅スペース(U+200B)には一致しませんでした。

2. 文字数・コードポイント数・バイト数を同じものとして数える "A𠮷あ" で確かめると、JavaScript の length は 4、コードポイント数は 3、UTF-8 のバイト数は 8 でした。3つとも違います。「𠮷」が UTF-16 では2コード単位、UTF-8 では4バイトを使うからです。

文字数制限や列長で数えがずれたとき、どの単位で数えているか確認しましたか? ツールの表は1行が1コードポイントで、UTF-16 の列に「(サロゲートペア)」が付くかどうかで見分けられます。

3. 0xE3 だけで文字が決まると思う 0xE3 は UTF-8 の「3バイト文字の先頭」を示すだけで、単独では文字になりません。復元欄に 0xE3 だけを入れると「UTF-8バイト列として不正です」と表示されました。続きの2バイトが揃って初めて、E3 81 82 なら「あ」、E3 80 80 なら全角スペースになります。ログの途中でバイト列が切れていないか見てください。

よくある質問

Q. 「0xe3」で検索しました。これは何の文字ですか?

A. 0xE3 は UTF-8 で3バイト文字の先頭バイトです。1バイトだけでは文字を特定できません。続きの2バイトとセットで、ひらがな・カタカナ・全角記号などになります。続きが分かるなら、スペース区切りで復元欄に貼ってください。

Q. 「00a0」は何の文字コードですか?

A. U+00A0、NBSP(改行禁止スペース)です。10進では 160、UTF-8 では C2 A0、UTF-16 では 00A0 です。HTML では &nbsp; として書かれることがあります。復元欄では 00a0 だけだと文字列として扱われたので、U+00A0 と書くと NBSP に戻せます。

Q. UTF-16 のコード表はどこにありますか?

A. UTF-16 の列は、貼り付けた文字ごとに表示されます。U+FFFF 以下はコードポイントと同じ値で、それより大きい文字はサロゲートペアの2つの値です。

Q. Unicode の文字一覧(Unicode 表)は見られますか?

A. 全コードポイントの一覧表は用意していません。常に表示しているのは ASCII の 0〜127 だけです。調べたい文字を貼るか、U+3042 のように番号を入れて確かめてください。全体の割り当ては The Unicode Standard の文字データベースが元になります。

関連ツール

最終更新・根拠の確認日: 2026-10-05 · カテゴリ: テキスト