シルギア

文字コード変換ツールの使い方|文字とUnicode・UTF-8・実体参照を相互変換

公開日:2026年7月27日 更新日:2026年8月30日 運営:シルギア(Analyzegear, Inc.) 対象ツール:文字コード変換

Webページを作っていて文字化けに出くわしたり、プログラムで特定の文字を指定したいとき、「この文字は内部でどんな番号やバイトで表されているのか」を知る必要が出てきます。シルギアの文字コード変換ツールは、入力した文字を6つの表記へ一度に変換し、その対応関係を目で確かめられるツールです。変換はすべてブラウザ内で完結する完全クライアント処理で、入力した文字が外部へ送信されることはありません。

変換される6つの形式は次のとおりです。

  • コードポイント(U+XXXX、16進)
  • 10進数(コードポイントを10進で表したもの)
  • UTF-8バイト(16進のバイト列)
  • HTML数値文字参照(16進の &#x…; と10進の &#…;)
  • \uXXXX エスケープ(JavaScript・JSONなどで使う表記)

「文字ごとの内訳」で1文字ずつの対応を、「形式ごとのまとめ」で入力全体を形式単位で確認でき、各形式はコピーボタンで貼り付けられます。

Unicodeコードポイントとは何か

Unicodeは、世界中のあらゆる文字に一意の番号を割り当てる規格です。この番号をコードポイントと呼び、慣習として「U+」に続けて16進数で表記します。たとえば半角の「A」はU+0041、ひらがなの「あ」はU+3042、漢字の「漢」はU+6F22です。U+0041を10進に直すと65、U+3042は12354になります(3042は16進なので、3×4096 + 0×256 + 4×16 + 2 = 12354)。

ここで大切なのは、コードポイントは「文字に付けた背番号」にすぎず、それ自体はバイトの並びではないという点です。この番号を実際のデータ(バイト列)にするには、次に述べるUTF-8やUTF-16といった符号化方式が必要です。コードポイント(番号)と符号化方式(バイトへの変換ルール)を分けて考えることが、文字コードを理解する第一歩です。

UTF-8とUTF-16 — 番号をバイト列にする方式

UTF-8は、コードポイントを1〜4バイトの可変長で表す、現在のWebの標準的な符号化方式です。コードポイントの値の範囲でバイト数が決まります。

  • U+0000〜U+007F(ASCII、半角英数記号)は1バイト。「A」は 41。
  • U+0080〜U+07FF(ラテン拡張・記号など)は2バイト。著作権記号「©」(U+00A9、10進169)は C2 A9。
  • U+0800〜U+FFFF(日本語を含む多くの文字)は3バイト。「あ」は E3 81 82、「漢」は E6 BC A2。
  • U+10000以上(絵文字など)は4バイト。「😀」は F0 9F 98 80。

ASCIIがそのまま1バイトになるため、英数字中心の文書ではファイルが小さく、既存の仕組みとも相性が良いのがUTF-8の利点です。一方のUTF-16は、多くの文字を2バイト(1つの符号単位)で表し、絵文字などは後述のサロゲートペアで2つの符号単位に分けます。JavaScriptの文字列は内部的にこのUTF-16で扱われており、この違いが絵文字の文字数カウントに影響します。

サロゲートペアと絵文字のつまずき

UTF-16では、U+FFFFまでの文字は1つの16ビット符号単位で表せますが、U+10000以上の文字はそのままでは収まりません。そこで、上位・下位2つの符号単位に分けて表す仕組みがサロゲートペアです。たとえば「😀」(U+1F600、10進128512)は、UTF-16では上位 D83D と下位 DE00 の2つに分かれ、\uXXXX表記では \uD83D\uDE00 となります。本ツールはこの分解形に加え、ES2015以降で使える \u{1F600} のまとめ形も併記します。

この仕組みを知らないと、文字数の数え方でつまずきます。JavaScriptの素朴な "😀".length は、サロゲートペアを2つと数えて 2 を返します。本ツールはコードポイント単位で反復するので、絵文字も正しく1文字として分解できます。さらに国旗の絵文字はもっと複雑で、「🇯🇵」は地域指示記号2つ(U+1F1EF と U+1F1F5)の組み合わせです。コードポイントとしては2つ、UTF-8では合計8バイトになり、見た目は1つでも中身は複数、という典型例です。

\uエスケープとHTML数値文字参照の使い分け

同じ文字でも、貼り付ける先によって適切な表記は変わります。用途で選び分けてください。

  1. プログラム内の文字列には \uXXXX エスケープ。JavaScript・Java・JSONなどで「あ」を \u3042 と書けます。環境依存で入力しづらい文字を、確実にソースコードへ埋め込めます。
  2. HTML本文には数値文字参照。16進の &#x3042; と10進の &#12354; はどちらも「あ」を表します。<(&#x3C;)のようにHTMLの構文と衝突する記号を安全に書きたいときにも有効です。

本ツールは選んだ文字に対応する両形式を生成するので、コピーしてそのまま貼り付けられます。逆に、ソースコード中の \u3042 や &#x3042; が実際どの文字なのか知りたいときにも、その表記に相当する文字を「文字ごとの内訳」で確かめる用途に使えます。

文字化けの原因と調べ方

文字化け(俗に「mojibake」)の多くは、書き込んだときの符号化方式と、読み出したときの解釈が食い違うことで起きます。UTF-8で保存したファイルをShift_JISとして開く、データベースの接続文字コードがずれている、HTTPヘッダやHTMLの charset 指定が実際の中身と違う、といったケースが典型です。画面に意味不明な漢字や記号がずらりと並ぶ崩れ方は、UTF-8のバイト列を別の方式で読んでしまった結果であることが多いものです。

原因を切り分けるときは、化けた文字や本来表示したい文字を本ツールに入力し、UTF-8バイトやコードポイントを確認してみてください。期待する文字(例:「あ」= U+3042 / E3 81 82)と実際のバイトを突き合わせれば、どの段階で解釈がずれたのかの手がかりになります。まずは手元の文字を入力し、内部の表現をのぞいてみてください。

「文字コード変換」を使ってみる →

ほかの記事

行の操作の使い方|ソート・重複削除・自然順を解説 シーザー暗号・ROT13のしくみと使い方|ずらす・戻す・総当たりで解く 文字・単語の出現頻度カウントの使い方|単語・文字・N-gramの違いと日本語での見方 点字変換の使い方と六点点字の仕組み|五十音の規則を検算で理解 タイピング速度テスト|CPM・WPM・正確率の測り方と上達のコツ 改行コード・空白変換の使い方|LF/CRLFの違いと整形の順序

記事一覧をすべて見る →