文字コードcharacter code

2013年08月11日 09:24

文字コードは、文字や記号をコンピュータで扱うために、文字や記号一つ一つに割り当てられた固有の数字です。英数字の文字コードは1バイトだけど、日本語や韓国語などの漢字は2バイト以上でコード体系を決めています(漢字は収録できないからね)。

 

いまどきは、2バイト以上の統一文字コード体系であるUnicodeの規格化が進んでいるけど、私が大学に入ったときあたりには、汎用機ではIBM社のEBCDICコードが使われていました。日本語の文字コードは、JISコード、UNIXなどで使われるEUC、WindowsやMac OSなどで使われるシフトJISの3種類。Content-Type: text/plain; charset=UTF-8なんて記述をメールなどでよくみますよね。これは、このコードで書かれていますよ、って宣言です。

 

じゃあ、そのコード同士の変換てどうなっているのでしょう?文字コード体系が違えば、同一のデータであっても想定外の文字として処理され、文字化けが生じます。今日、所長に教わったのは、文字コードの変換について。

 

たとえば、漢字をバイナリコードで変換すると、E8 A4 46 6F・・・など、英数字に変換されます。これは、該当する漢字がバイナリの規格で割当されているのです。旧システムから新システムへの移行が行われるときに、旧データが読めなくならないように、後に元の信号またはデータに戻せるような変換を行うことが必要です。これを エンコードencode、符号化といいます。また、エンコードしたデータを元に戻すことを、デコードdecode、復号といいます。

 

この仕組みは不便なようで、実は便利なこともあります。巨大なデータをエンコードして、データ量を減らし、なんらかの作業を行ってからデコードして元に戻す、ということが可能になります(例えば、動画や画像,音声などの圧縮、解凍など)。逆に、シフトJISの漢字は2バイトなのに、UTFだと3バイトになる、とうこともあり、変換後のファイル容量が増えることもあるので注意が必要です。