【ゆーてぃーえふはち】

UTF-8 とは?

💡 世界中の文字を扱える「現代の標準文字エンコード」
📌 このページのポイント
UTF-8 エンコーディングの仕組み 文字ごとにバイト数が変わる(可変長) 1バイト A → 0x41 ASCII互換 2バイト ñ → 0xC3 0xB1 欧州言語など 3バイト あ → 0xE3 82 82 日本語・中国語など 4バイト 絵文字など 補助文字 文字コードの比較 UTF-8 Web標準(97%以上) ASCII互換・可変長 UTF-16 Windows内部で使用 2 or 4バイト Shift_JIS 日本語レガシー 文字化けの原因に ※ 現在のWeb標準はUTF-8に統一されている
UTF-8エンコーディングの仕組みと比較
ひよこ ひよこ

UTF-8って何?

ペンギン先生 ペンギン先生

世界中の文字(ひらがな・漢字・アラビア文字・絵文字など)をコンピュータで表現するための「文字コード(エンコード)」の一つだよ。現代のWeb・プログラミングでほぼ標準になっている。

ひよこ ひよこ

Shift-JISとの違いは?

ペンギン先生 ペンギン先生

どちらも文字をバイト列に変換する方式だけど範囲が違う。Shift-JISは日本語専用で英語・日本語だけ扱える。UTF-8はUnicodeをベースに世界中の全文字を扱える。WebではUTF-8が推奨で、Shift-JISのページはだんだん減っている。

ひよこ ひよこ

文字化けって何が原因?

ペンギン先生 ペンギン先生

エンコードとデコードが一致しないとき文字化け。例えばUTF-8で書いたファイルをShift-JISとして開くと日本語が化ける。Webでは「Content-Type: text/html; charset=UTF-8」のような宣言が重要で、これが合っていないと文字化けする。

ひよこ ひよこ

UTF-8は1文字何バイトなの?

ペンギン先生 ペンギン先生

可変長で、文字によって1〜4バイトになるんだ。ASCII文字(英数字)は1バイト、ひらがな・カタカナ・漢字は3バイト絵文字は4バイト。だから英語中心のテキストはコンパクトだけど、日本語テキストはShift-JIS(2バイト固定)よりサイズが大きくなることがある。それでも互換性の高さからUTF-8が世界標準になったんだよ。

ひよこ ひよこ

データベースのUTF-8とutf8mb4って何が違うの?

ペンギン先生 ペンギン先生

MySQLの歴史的な罠だよ。MySQLの「utf8」は最大3バイトまでしか扱えない不完全な実装で、4バイト絵文字を保存できない。完全なUTF-8は「utf8mb4」という名前で提供されている。新規でMySQLテーブルを作るなら必ずutf8mb4を使うこと。古いシステムでutf8のまま運用していると、絵文字を含むデータを保存しようとしてエラーになる。これはMySQLの有名な地雷で、知っているかどうかで障害対応の速さが全然違うよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
UTF-8って出てきたら「世界中の文字を表現できる現代の標準文字エンコード、Webやプログラミングデフォルト」と思えばOK!
📖 おまけ:英語の意味
「Unicode Transformation Format - 8-bit」 = ユニコード変換形式(8ビット単位)
💬 1993年にKen Thompson(Unixの生みの親)とRob Pikeが設計。ASCIIと後方互換性を保ちながらUnicodeを効率的に表現できる設計が普及を加速させた
← 用語集にもどる