ホーム  > ブログ一覧  > ユニコード

ブログ

ユニコード

2019.03.12


以前ではコンピュータで日本語を利用する際、メールでは
ISO-2022-JP、それ以外ではCP932(≒ShiftJIS)が利用
されることが多かったのですが、最近はようやく状況も変わり
UTF-8で運用する場面も増えました。一台のPCだけで完結
していた頃はともかくネットワークを通したサービスを利用
しない日はないといっても過言ではない現在、特定の
言語しか表現できない文字セットは不便ですよね。

 

英数字と記号が表現できればよかった頃は8bitあれば
(原理上は)256種類の文字が格納できるため一文字に
1Byte割り当てれば十分でした。その後機械の性能が上がり
漢字を含む日本語を表現できるようになると当然256文字
では全然足りないので一文字に2Byte割り当てるように
なります。このころ各国で独自に文字に番号を割り当てた
ために英語以外のテキストデータが化ける原因となりました。
さらにPCの性能も上がりネットワークが普及してくると
世界中の文字をすべて表現できるような文字セットが
必要となりその策定が始まります。そうして世界中の文字に
ユニークな(重複しない)番号を割り振ろうとしたのが
ユニコードです。現在21bitの幅で1,114,112文字を含める
ことが可能ですがこれをそのまま運用するとなると一文字に
3Byte必要になります。3Byteというのはコンピュータから
すると少し扱いにくい幅なため運用に際していくつか表現
方法が考えられました。

 

もっとも単純なのはコンピュータが扱いやすい32bitに
合わせて一文字=4Byteとする方法です。プログラムを
書く人間にとっても楽な方法ですが、常に上位11bitが
0なため世界規模でみると膨大な無駄が発生することに
なります。また例えば英字「A」に割り振られた番号は65
(0x41)ですがそのまま21bit分表現すると
「0_0000_0000_0000_0100_0001」
となり上位に14bit分の無駄があります。一文字4Byteで
あれば25bitも無駄が発生します。英語を母国語とする国の
人にとっては、日常あまり使わない外国の文字のために
無駄(メモリやストレージの消費)を強いられることになります。

 

UTF-8というのは文字の番号の有効な情報分を必要最小限
のByte数で表現する方法です。必要最小限ですから文字に
よって1Byteだったり3Byteだったりもっと長くなったりします。
日本語利用時には一文字3Byte必要になるので、一文字
2Byteで表現できていたCP932よりは増えますが、英数字は
8bitのころの番号に合わせてあるため一文字1Byteで済み
ます。そのため膨大なプログラムのソースコードなど英数字が
メインのデータに大きく手を加えることなく移行できるメリットも
あります。必要最小限な幅で表現する、という部分はSMF
(Standard MIDI File)のデルタタイムみたいですね。

 

何事にも過渡期というものにはトラブルが発生したりするもの
ですが、ユニコードとCP932のシステムが混在していると
やはり日本語文章だけでも文字化けが起きたりします。
社内だけでも完全移行までにはあと5年はかかりそうです。

ページトップへ