合同会社小村ソフト
CE101

文字コードを図と演習で理解する

CSV を Excel で開いたら「縺薙s縺ォ縺。縺ッ」。メールの件名が記号の羅列。データベースに入れた名前が「????」— 文字化けは毎度おなじみなのに、原因を説明しろと言われると意外と難しいものです。この講座では対処法の丸暗記ではなく、化けた画面を見たら「どの符号化で書かれたバイト列を、どの符号化として読んでしまったのか」を自分で推理できるようになることを目指します。図で仕組みをつかみ、UTF-8 のバイト列を手で組み立て、最後は実務風の文字化けケースを推理して仕上げる構成です。

図 → 番号 → バイト列 → 推理 全 43 問 ブラウザ内採点 localStorage 保存
所要
3〜4 時間
問題数
全 43 問
形式
7 章 + 小問 + シミュレータ
費用
無料
同じバイト列 E3 81 AB が、UTF-8 として読むと「に」、Shift_JIS として読むと「縺ォ」、Latin-1 として読むと「ã«」になることを示す図

ファイルの実体はバイト列だけで、「何の符号化か」の札は付いていません。同じバイト列でも読み方が違えば別の文字に見える — この 1 枚が講座全体の出発点です。

この講座の特徴

本文のすぐ下に小問
読んだ直後に 1〜3 問ずつ解く構成なので、「分かったつもり」のまま先へ進みにくくなっています。
UTF-8 を手で組み立てる
「あ」U+3042 が E3 81 82 の 3 バイトになるまでを、ビットの流し込みとして自分の手で計算します。
バイト列シミュレータ
第 3 章のシミュレータに好きな文字列を入れると、コードポイント・UTF-8 のバイト列・UTF-16 のコード単位、さらに「Shift_JIS として誤読した姿」まで目で確かめられます。
ブラウザ内採点・登録不要
全 43 問はブラウザ内で採点され、結果はお使いのブラウザの localStorage にだけ保存されます。サーバには何も送信しません。

この講座を貫く 1 つの見方

文字はコンピュータの中では、常に 2 段階で扱われます。この 2 段階を分けて考えられるようになることが、この講座のすべてです。

第 1 段階: 番号(コードポイント)
文字集合が、どの文字に何番を振るかを決める。Unicode では「あ」= U+3042。(第 2 章)
第 2 段階: バイト列(符号化)
符号化が、その番号をどうバイト列にするかを決める。UTF-8 なら U+3042 → E3 81 82。(第 3〜5 章)
化けたときの型
ファイルにはどの符号化かの札が付いていないので、「書いた符号化」と「読んだ符号化」がズレると別の文字に見える。(第 1・6・7 章)

この講座の合言葉: 文字化けを見たら、そこで思考を止めずに問いかけてください — どの符号化で書かれたバイト列を、どの符号化として読んでしまったのか?

章構成

受講のコツ

  1. 本文 → すぐ下の小問の順で進めてください。まとめて後で解くより、読んだ直後に解くほうが定着します。
  2. 第 3 章のビットの流し込みは、必ず紙に 2 進数を書いて手を動かしてください。一度自分で E3 81 82 を導くと、UTF-8 が「暗記物」から「計算できるもの」に変わります。
  3. 第 3 章のシミュレータには、自分の名前や仕事で扱う文字列を入れてみてください。バイト数と文字数のズレが体感に変わります。
  4. 第 7 章のケース問題でつまずいたら、対応する章へ戻って 1〜2 周だけ復習してください。全部やり直す必要はありません。

開始前の前提

  • テキストファイルや CSV を扱った経験があれば十分です。プログラミング経験は必須ではありません。
  • 16 進数は「0〜9 と A〜F で数を表す書き方」という程度の前提から、章の中で読み方を練習します。
  • 2 進数と 16 進数の相互変換(4 ビット = 16 進 1 桁)だけは第 3 章で使うので、本文中で復習を挟みます。