Unicodeは文字セットを定義しており,それらの文字には1文字当たり最大20ビットの番号が振られている。この番号を,決められたバイト列に変換する処理方法がエンコーディングだ。例えば「UTF-8」では,いわゆる半角英数字は1バイト,日本語の全角文字は3バイトで表現する。より正確には, Unicodeの文字番号が7ビットまでの文字は1バイト,8ビット以上11ビットまでは2バイト,12ビット以上16ビットまでは3バイト,17ビット以上21ビットまでは4バイトで表現する(図1)。
Unicodeのサイズって何で文字ごとに違うんだろうな、と漠然と考えていたけれども、こうして説明してもらうとよく分かる。逆を言うと、そんなことをきちんと考えていなかった自分に少し反省する。確かにこのUTF-8エンコーディングの方式だったら、割り当てられた番号が7ビットまでだったら1バイトで表現できる。まあこれが2バイトでも表現可能なのも問題なんだろうけど。