必要なツールを、すぐ使えるように

テキスト ↔ UTF-8 16進数変換ツール

テキストの欄に文を入れると、真ん中の帯に1文字ずつ UTF-8 のバイトが付き、16進数の欄に E6 97 A5 のような値が書かれます。16進数の欄に \xE6・0xE6・%E6 のような値を貼り付ければ、逆に文字へ戻します。バイトが壊れていれば、何バイト目がなぜ誤りか、Shift_JIS で読むと何になるかも併せて表示します。

最終更新 2026-10-21計算はブラウザ内だけで処理
例

文字・バイトの帯

1文字ずつの UTF-8 バイト。矢印キーで文字を選びます

16進数の形式

ビットルーペ帯の文字を押すか、欄でカーソルを動かしてください

エンコード別のバイト数同じ文を別の方式で保存すると

    UTF-8 バイトの内訳

      最終更新 2026-10-21入力値は保存しません

      ROBERINの基準必要なツールを、
      すぐ使えるように。
      • ひと目で分かる画面入力と結果の位置をはっきり分けます。
      • 結果が先主要な結果を先に示し、過程は必要なときだけ。
      • 求めない登録や不要な入力なしですぐ使えます。

      「日」は E6 97 A5: 文字が UTF-8 で占めるバイト

      UTF-8 の16進数変換とは、文字をコンピューターが実際に保存する UTF-8 のバイトに直し、1バイトを 00〜FF の2桁の16進数で書き表すことです。「日」のコードポイント(Unicode での文字の番号)は U+65E5 で、UTF-8 では E6 97 A5 の3バイトになります。英字の A は 41 の1バイト、絵文字の 😀 は F0 9F 98 80 の4バイトです。逆に、ログやプログラムから受け取った E6 97 A5 を入れれば、「日」に戻せます。

      上の変換ツールは、テキストの欄も16進数の欄も直接書き換えられます。書き換えたほうが基準になり、真ん中の帯には1文字ずつ、その文字のバイトが字幕のように付きます。帯の下の色は1・2・3・4バイトの区別で、文字を押すと「ビットルーペ」が、コードポイントのビットが UTF-8 のどの位置に入るかを描きます。16進数の書き方はスペース区切り・続けて書く・0x 配列・\x エスケープ・% エンコードの五つで、貼り付けるときはこの五つをすべて読み取ります。

      UTF-8 のバイトを直接見たい場面

      • 文字化けして、元の文字コードを調べたいとき: UTF-8 の日本語は、漢字もひらがなも多くが E3〜E9 で始まる3バイトです。Shift_JIS では全角が2バイトで、半角カナは1バイトです。化けた文字の元のバイトを16進数で入れると、UTF-8 として読めるか、読めなければ Shift_JIS では何になるかを並べて表示します。
      • ログに \xE6\x97\xA5 のような値が出たとき: Python は bytes の値を表示するとき、ASCII 以外のバイトを b'\xe6\x97\xa5' のように \x エスケープで書きます。この値をそのまま16進数の欄に貼ると、外側の b'…' やそのまま書かれた英字も読み取って、元の文に戻します。
      • DB に保存しようとしてエラーになったとき: MySQL の utf8mb3(以前の名前は utf8)は1文字が最大3バイトなので、4バイトの絵文字は保存できません。エラー 1366 のメッセージには Incorrect string value: '\xF0\x9F\x98\x80' のように、問題の値がバイトで出ます。この部分を入れると、😀 が4バイトの1文字だったのでだめだったと、すぐ分かります。
      • 見た目は同じなのに、比較や検索が合わないとき: 改行しないスペース(C2 A0)、幅のないスペース(E2 80 8B)、ファイル先頭の BOM(EF BB BF)は画面に見えませんが、バイトは違います。帯には NBSP・ZWSP・BOM などのラベルで表示します。全角スペース(E3 80 80)も通常のスペース(20)とはまったく別のバイトです。
      • ファイル名の濁点が分かれてしまったとき: Mac の HFS Plus(Mac OS 拡張)のボリュームは、ファイル名を NFD の変種で保存します。NFD にすると「ガ」が「カ」と濁点(U+3099)の2文字に分かれるため、「ガイド.pdf」は13バイトではなく19バイトになります。NFC にまとめると何バイトになるかも、変換ツールが知らせます。
      • URL の中の %E6%97%A5 を読むとき: URL に日本語を入れるときは、まず UTF-8 に変え、バイトごとに % と2桁の16進数で書きます。アドレスバーからコピーした %E6%97%A5%E6%9C%AC%E8%AA%9E を入れると、「日本語」が出ます。
      • コードに文字列をバイト配列として入れるとき: 組み込み機器や通信仕様に文字を送るには、0xE6, 0x97, 0xA5 のような配列が必要です。形式を「0x 配列」にすれば、そのまま貼り付けられる形で書き出します。

      使い方

      1. テキストの欄に文を入れるか、16進数の欄にバイトを貼り付けます。最初の画面には日本語・英字・絵文字の例が入っています。上の「例」ボタンで、見えない文字、濁点が分かれた形、ログの \x バイト、文字化けのバイトも入れられます。
      2. 間の矢印が変換の向きを示します。テキストの欄を書き換えると下向き(エンコード)、16進数の欄を書き換えると上向き(デコード)に変わります。
      3. 16進数の形式と、大文字・小文字を選びます。16進数を入れたあとで形式を変えると、同じバイトを新しい形式で書き直します。
      4. 真ん中の帯で文字を押すか、欄でカーソルを動かすと、ビットルーペにその文字のコードポイント・UTF-8・UTF-16・Shift_JIS のバイトと、バイト位置が出ます。
      5. 「16進数をコピー」か「テキストをコピー」で結果を持ち出します。右下では、同じ文を UTF-16 や Shift_JIS で保存したときのバイト数を比べられます。

      UTF-8 が文字をバイトに分ける規則

      UTF-8 は、Unicode の範囲 U+0000〜10FFFF の文字を1〜4バイトで書く方式です(RFC 3629)。先頭バイトの上位ビットが何バイトの文字かを示し、続くバイトはすべて 10 で始まります。そのため、バイトを1つ見るだけで、それが文字の始まりなのか途中なのかが分かります。

      コードポイントの範囲ごとの UTF-8 バイトの形(RFC 3629)
      コードポイントの範囲バイト数ビットの形例
      U+0000〜007F10xxxxxxxA → 41
      U+0080〜07FF2110xxxxx 10xxxxxxé → C3 A9, Ω → CE A9
      U+0800〜FFFF31110xxxx 10xxxxxx 10xxxxxx日 → E6 97 A5, 語 → E8 AA 9E
      U+10000〜10FFFF411110xxx 10xxxxxx 10xxxxxx 10xxxxxx😀 → F0 9F 98 80

      「日」を自分で分けてみます。U+65E5 を2進数で書くと 0110 0101 1110 0101 の16ビットです。3バイトの枠には 4 + 6 + 6 ビットの空きがあるので、0110 / 010111 / 100101 に分けて、11100110、10010111、10100101 に入れます。この3バイトが16進数で E6、97、A5 です。U+0000〜007F は1バイトのままなので、英数字と記号だけの文は ASCII とバイトが完全に同じになります。

      ひらがな・カタカナ・ほとんどの漢字は U+0800〜FFFF に入るので、UTF-8 では常に3バイトです。そのため「こんにちは」の5文字は15バイトになります。一方、半角カナは UTF-8 では3バイトのままですが、Shift_JIS では1バイトで済みます。「カ」は UTF-8 で EF BD B6、Shift_JIS では B6 です。

      文字ごとの UTF-8・UTF-16・Shift_JIS のバイト

      よく確かめる文字のバイト(UTF-16 はコードユニット、Shift_JIS はブラウザーの shift_jis の表)
      文字コードポイントUTF-8UTF-16Shift_JIS
      AU+004141004141
      éU+00E9C3 A900E9なし
      ΩU+03A9CE A903A983 B6
      €U+20ACE2 82 AC20ACなし
      日U+65E5E6 97 A565E593 FA
      語U+8A9EE8 AA 9E8A9E8C EA
      あU+3042E3 81 82304282 A0
      ガU+30ACE3 82 AC30AC83 4B
      カ(半角)U+FF76EF BD B6FF76B6
      ゙(半角の濁点)U+FF9EEF BE 9EFF9EDE
      結合用の濁点U+3099E3 82 993099なし
      😀U+1F600F0 9F 98 80D83D DE00なし
      全角スペースU+3000E3 80 80300081 40
      改行しないスペースU+00A0C2 A000A0なし
      BOMU+FEFFEF BB BFFEFFなし
      ZWJ(結合子)U+200DE2 80 8D200Dなし

      同じ文でも、文字コードによってバイト数が変わる

      見た目の文字数と、文字コード別のバイト数(変換ツール右下の棒と同じ計算)
      文見た目の文字コードポイントUTF-8UTF-16Shift_JIS
      Hello555105
      日本語33966
      こんにちは55151010
      ガイド(半角)3515105
      ガイド.pdf77131410
      café4458é なし
      日本語 Hi! 😀991820😀 なし
      👨‍👩‍👧(家族)151816なし

      英字だけなら UTF-8 がいちばん短く、日本語は UTF-8 が Shift_JIS の1.5倍になります。ただし Shift_JIS は日本語の外の文字をすべては収められません。é や 😀 のように表にない文字は保存できないため、複数の言語や絵文字が混ざるウェブでは UTF-8 が使われます。半角カナの「ガイド」は、濁点が独立した1文字なので見た目は3文字でもコードポイントは5個あり、UTF-8 では15バイト、Shift_JIS では5バイトです。家族の絵文字は画面では1文字ですが、人の絵文字3つ(4バイト × 3)を ZWJ 2つ(3バイト × 2)でつないだものなので、18バイトになります。

      16進数の五つの書き方

      「日本語」(E6 97 A5 E6 9C AC E8 AA 9E)を各形式で書いた形
      形式書き方主な使い道
      スペース区切りE6 97 A5 E6 9C AC E8 AA 9Eダンプ(16進数表示)のソフト、文書やログにバイトを書くとき
      続けて書くE697A5E69CACE8AA9EPython の bytes.hex() の結果、ハッシュやキーのような続けた値
      0x 配列0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9EC・Java・JavaScript のバイト配列
      \x エスケープ\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9EPython の bytes の表示、C の文字列、MySQL のエラーメッセージ
      % エンコード%E6%97%A5%E6%9C%AC%E8%AA%9EURL

      貼り付けるときは、形式を選ばなくても構いません。スペース・タブ・改行・カンマ・コロン・ハイフンを区切りとして読むので、.NET の BitConverter.ToString が出す E6-97-A5 もそのまま入ります。\x と % の形式では、その間にそのまま書かれた英数字もバイトとして読み取り、外側の b'…'・"…"・[…] も外します。パーセントエンコードは大文字の16進数が推奨されていますが(RFC 3986)、大文字と小文字は同じバイトです。

      // JavaScript: 文 → UTF-8 の16進数
      [...new TextEncoder().encode('日本語')].map(b => b.toString(16).padStart(2, '0')).join(' ');  // 'e6 97 a5 e6 9c ac e8 aa 9e'
      
      # Python 3.8 以上: 文 ↔ 16進数
      '日本語'.encode('utf-8').hex(' ')                       # 'e6 97 a5 e6 9c ac e8 aa 9e'
      bytes.fromhex('E6 97 A5 E6 9C AC E8 AA 9E').decode('utf-8')  # '日本語'(スペースは無視)

      UTF-8 として読めないバイト

      すべてのバイト列が UTF-8 とは限りません。続きのバイトが先頭なしで現れる、文字が途中で切れる、もっと短く書ける文字をわざと長く書く、といったものは不正な UTF-8 です。RFC 3629 は、サロゲートの領域(U+D800〜DFFF)を UTF-8 で書くことを禁じ、デコーダーが C0 80 のような長い形(overlong)を受け入れてはならないと警告しています。ブラウザーは不正な部分ごとに置換文字 �(U+FFFD)を1つ入れますが、この変換ツールも同じ規則で区切り、帯にエラーのバイトと理由を表示します。

      不正な UTF-8 の例と、ブラウザーが表示する文字
      バイト理由表示される文字
      8010xxxxxx は続きのバイトなのに、先頭のバイトがない�
      FFF5〜FF は UTF-8 で使われないバイト�
      C0 80U+0000 を2バイトに伸ばした長い形(C0・C1 は常に禁止)��
      E0 80 80E0 の後ろに来られるのは A0〜BF だけ(長い形)���
      ED A0 80U+D800 のサロゲートの領域(ED の後ろは 80〜9F だけ)���
      F4 90 80 80U+10FFFF を超える(F4 の後ろは 80〜8F だけ)����
      E2 28 A13バイトの文字が2バイト目で切れ、28 は「(」として別に読む�(�
      E6 97「日」の最後のバイトが抜けている�

      最後の2行のように切れた文字は、そこまで正しく届いたバイトをまとめて � 1つに置き換えます。Unicode ではこれを「最大の部分列(maximal subpart)」の置換と呼んでいて、同じバイトを入れれば、ブラウザーとこの変換ツールの � の数は一致します。16進数の欄に入力している最中は、最後の文字が途中でも誤りとは見なさず、残りのバイト数を知らせます。欄から離れた時点で、エラーと判定します。

      文字化けの形から元の文字コードを推測する

      文字化けの最大の原因は、ある文字コードで保存したバイトを別の文字コードで読むことです。化け方にはくせがあるので、見た目から、どちらの向きで読み違えたのかを推測できます。

      元の文 → 読み違えた方式 → 表示される形(ブラウザーの TextDecoder で再現)
      元のバイト読み違えた方式表示される形
      UTF-8「文字化け」 E6 96 87 E5 AD 97 E5 8C 96 E3 81 91Shift_JIS譁�ュ怜喧縺�
      UTF-8「日本語」 E6 97 A5 E6 9C AC E8 AA 9EShift_JIS譌・譛ャ隱�
      UTF-8「ガイド」 E3 82 AC E3 82 A4 E3 83 89Shift_JIS繧ャ繧、繝�
      Shift_JIS「文字化け」 95 B6 8E 9A 89 BB 82 AFUTF-8��������
      Shift_JIS「日本語」 93 FA 96 7B 8C EAUTF-8���{��
      Shift_JIS「ガイド」 83 4B 83 43 83 68UTF-8�K�C�h

      表の「譁�ュ怜喧縺�」や「譌・譛ャ隱�」のように、見慣れない漢字に半角カナ(ュ・ャ・・など)や � が混ざるときは、UTF-8 のバイトを Shift_JIS として読んだ場合に当たります。一方、� が並ぶなかに K・C・h や { のような半角の英数字・記号だけが残るときは、Shift_JIS のバイトを UTF-8 として読んだ場合です。「本」は 96 7B で、後ろの 7B が { として読まれ、「ガイド」の 83 4B・83 43・83 68 は後ろのバイトだけが K・C・h として残ります。原因が分かったら、元のバイトを16進数の欄に入れてください。変換ツールは UTF-8 として読み、読めなければ Shift_JIS で読んだ結果を下に併記します。例の「文字化けのバイト」を押すと、95 B6 8E 9A 89 BB 82 AF が Shift_JIS では「文字化け」だと確かめられます。

      間違えやすい点

      • 数値を16進数に変える計算だと思う: テキストの欄に 255 を入れても FF にはならず、数字の文字「2」「5」「5」のバイト 32 35 35 が出ます。数の基数を変えたいときは、基数変換ツールを使います。
      • コードポイントと UTF-8 のバイトを混同する: U+65E5 は「日」の番号で、E6 97 A5 はその番号を UTF-8 で保存したバイトです。16進数の欄に U+65E5 や 日 を入れると、バイトではないという案内が出ます。
      • 全角と半角のバイトを同じだと考える: 全角の「A」は U+FF21 で UTF-8 では EF BC A1 の3バイト、半角の「A」は U+0041 で 41 の1バイトです。見た目が似ていても、検索や照合では別の文字として扱われます。
      • 16進数への変換を暗号化だと思う: 16進数はバイトの書き方にすぎず、誰でも元の文に戻せます。パスワードや個人情報を隠す目的で使ってはいけません。
      • ファイル先頭の EF BB BF を消すべきか迷う: EF BB BF は UTF-8 の BOM(U+FEFF)で、先頭に付くと「UTF-8 のファイル」という目印の役目だけを果たします。Unicode FAQ は、ファイルが ASCII の文字で始まることを前提にするバイト指向のプロトコルでは BOM を避けるよう述べ、一方で Microsoft の .txt の慣習のように BOM を求める場合もあると説明しています。受け取る側が BOM をどう扱うかを確かめてから、残すか消すかを決めてください。
      • Windows の改行 0D 0A を期待する: ブラウザーの入力欄は改行を LF(0A)にして保持します。テキストの欄で打った改行は 0A なので、CR(0D)を含むバイトを確かめたいときは16進数の欄に 0D 0A を入れてください。
      • 文字数とバイト数を同じに見る: 長さの上限がバイトで決まっている欄では、日本語10文字は30バイトと数えられます。帯の上の「文字・コードポイント・バイト」の3つの数字を合わせて見てください。

      できないこと

      • 変換はブラウザーの中だけで行い、入力した文やバイトをサーバーへ送ったり、URL や保存領域に残したりしません。
      • テキストは一度に UTF-16 で 100,000 桁、16進数は区切りを含めて 1,200,000 桁まで変換します。帯は先頭の 1,500 個の文字・エラーバイトまで描き、残りは変換とコピーにだけ含まれます。
      • 16進数の出力は UTF-8 のバイトだけです。UTF-16 と Shift_JIS は、バイト数の比較とルーペの文字ごとの値としてだけ表示します。
      • Shift_JIS の値はブラウザーの WHATWG Encoding の表に従うため、古いソフトが使う表とは一部の文字が異なる場合があります。
      • 元の文を自動では正規化しません。濁点が分かれた形(NFD)の文は知らせるだけで、「NFC にまとめる」を押したときに初めて変えます。
      • 画像や圧縮ファイルのような任意のバイナリファイルは扱いません。ファイルを文字に直したいときは Base64 のツールを使ってください。
      • % エンコードを読むとき、+ は空白にせず + の文字(2B)として扱います。フォームのデータのように + が空白を表す値は、URL エンコーダー・デコーダーを使ってください。

      出典

      基準: UTF-8 の規則は RFC 3629 と Unicode 18.0 コア仕様の第3章、ブラウザーのエンコード・デコードと shift_jis の表は WHATWG Encoding Standard、そのほかの形式やエラーメッセージは各文書で、2026年10月21日に確認しました。UTF-8 のバイトの規則は RFC 3629 以降変わっていません。

      よくある質問

      日本語の1文字は UTF-8 で何バイトですか?

      ひらがな・カタカナ・ほとんどの漢字は UTF-8 で3バイトです。たとえば「日」は E6 97 A5、「あ」は E3 81 82 です。同じ文字が Shift_JIS では2バイトで、半角カナだけは Shift_JIS で1バイト、UTF-8 では3バイトです。濁点が分かれた形(NFD)の「ガ」は「カ」と濁点の2文字になり、6バイトになります。

      \xe6\x97\xa5 や %E6%97%A5 のような値を文字に直すには?

      16進数の欄にそのまま貼り付けてください。変換ツールは \x エスケープ・% エンコード・0x 付き・スペースやカンマ・コロン・ハイフン区切りをすべて読み取り、外側の b'…' やそのまま書かれた英字も一緒に読んで、テキストの欄に「日」を表示します。

      16進数の大文字と小文字は違う値ですか?

      いいえ。E6 と e6 は同じバイト(10進数の230)です。出力は大文字と小文字から選べ、URL のパーセントエンコードには RFC 3986 が大文字を推奨しています。

      「UTF-8 として読めないバイト」と表示されたらどうすればよいですか?

      バイトが途中で欠けているか、もともと別の文字コードで保存された文かもしれません。変換ツールは最初のエラーが何バイト目かとその理由を示し、Shift_JIS で読めればその結果も下に併記します。たとえば 95 B6 8E 9A 89 BB 82 AF は UTF-8 としては読めませんが、Shift_JIS では「文字化け」です。

      MySQL で Incorrect string value: '\xF0\x9F\x98\x80' というエラーが出るのはなぜですか?

      F0 9F 98 80 は絵文字 😀 の UTF-8 の4バイトです。MySQL の utf8mb3(以前の名前は utf8)は1文字が最大3バイトのため、このような4バイトの文字は保存できません。絵文字を保存するには、列の文字セットを最大4バイトの utf8mb4 に変える必要があります。

      絵文字が1つなのに、なぜ18バイトになるのですか?

      👨‍👩‍👧 のような家族の絵文字は画面では1文字に見えますが、人の絵文字3つ(各4バイト)を、幅のない結合子 ZWJ 2つ(各3バイト)でつないだものです。そのためコードポイントは5個、UTF-8 は18バイトになります。帯では ZWJ が別のラベルとして表示されます。

      EF BB BF とは何ですか?

      UTF-8 の BOM(バイトオーダーマーク、U+FEFF)です。ファイルの先頭に付いて「UTF-8 の文」という目印の役目をし、画面には見えません。変換ツールはこのバイトを消さず、帯に BOM のラベルで表示します。残すかどうかは、受け取るソフトが BOM をどう扱うかで決めてください。

      数字の 255 を入れると FF になりますか?

      いいえ。この変換ツールは数の基数を変えるのではなく、文字を UTF-8 のバイトに変えます。255 は数字の文字「2」「5」「5」なので、32 35 35 になります。255 を16進数の FF にしたいときは、基数変換ツールを使ってください。