「文字集合と文字エンコーディング」というタイトルで、経験2〜3年目の人をターゲットに社内勉強会を開催しました。文字集合という単語を知っている必要はないですけど、少なくともUTF-8とShift_JISとでは扱える文字の種類数が違うことだけは伝えたかったので、その意味では目標が達成できたと思っています。
まとめ
- 文字集合とは、扱える文字の集合
- JIS X 0208なら6000文字くらいの日本語の文字
- UCS-2なら60000文字くらいの世界中の主要な文字
- 文字エンコーディングとは、文字の集合をバイト列に直す方式
- Shift_JISはJIS X 0208(など)を1〜2バイトにする
- UTF-8はUCS-2を1〜3バイトにする
- 文字エンコーディング関連のツールを使いこなそう
- nkfやlvを使いこなそう
- 日本語を探すならlgrep
- 最終兵器:hexjaで16進ダンプ
ムービー
発表資料
補足など
若い人がターゲットということで、難しいことを言わないように、でも嘘はつかないように心がけたつもりです。でも、万一嘘があったら教えてください。
正確に言うとUTF-8の扱う文字集合はUCS-4で、UTF-8の1文字は1〜4バイトになりますけど、説明が長くなりそうだったので上のように説明してしまいました。UCS-2だけ扱うなら1〜3バイトであり、身近なデータであればASCII1バイト、日本語3バイトになるよ、という程度の理解で十分だろうと思います。
また、今回の説明ではUCS-2を文字集合の意味で使いましたが、サロゲートペアなしのUTF-16と同義の文字エンコーディングという意味で使っても間違いでは無いようです。というか、あれこれ調べてみましたが、何が正しいのか私自身混乱していたりします…。

コメント / トラックバックはありません
コメントする