プログラム悪戦苦闘日記

はてなダイアリーからの移行(遺物)

文字コードとエンコード

 いわゆるコンピューター業界にいる人にとって、文字コードの知識は常識なんだそうです。そんな自分は… 全然分かんね(泣)。文字コードについては一度きちんとまとめたいと思っていたのですが、調べてみると、文字コードについての説明は、サイトにしろ本にしろかなり情報が少ないことに驚きます。見つかったとしても、文字コードの一覧とか。とにかく分かる範囲でまとめて見たいと思います。いちよう目標は、某@IT

文字コード   エンコードUnicode UTF-7 	utf-7 	

Unicodeは、世界中の文字を16bitもしくは32bitの固定長の文字コードで統一的に扱うために作られたコード。
16bitの方をUCS-2、32bitの方を UCS-4という。
Unicodeをファイルへの保存や、通信回線上で送受信するためのエンコーディング方法の1つがUTF-7である。
UnicodeUCS-2)を7bitのコードでのみ送信できるように、一部のUnicode文字をBase64エンコーディングしている

という説明を見てもヘコまない程度まで行きたいと思います。

1.コンピューターは文字なんてあつかえません

 コンピューターはビットしか扱えません。それはシリコン結晶の中に不純物を少し混ぜることによって… なんて話はどうでもよく、平たく言うと数値しか扱えません。じゃぁ文字はどうするかというと、ある数値を文字にマッピングするわけです。例えば41を'A'にするとか。そんな文字セットに ASCII (American Standard Code for Information Interchange) というのがあります。最もよく、というか今でもよく使われているので知らない人はいないじゃないでしょうか。ASCIIコードは最も有名なので、検索すれば何の値が何の文字であるか、すぐ分かるでしょう。
 ASCIIの特徴は、

  • アルファベットも大文字と小文字が扱える
  • タブや改行コードなどの制御文字がある
  • 128文字(7bit)で定義されている

 この一番重要なのが、7bitであるというところ。コンピューターは通常8bit単位で扱うから、文字を1byteで扱うとすると、1bit余るわけです。つまり、この余った1bitをなんかのフラグで使えてラッキーというわけです。
 しかしASCIIの欠点は、文字はアルファベットしか扱えないということです。確かに!や#のような記号も一部は扱えますが、基本的にはアルファベットだけです。つまり、アルファベットしか扱えないのはアメリカ人には大変うれしいことであるが、それ以外の人にとってははなはだ迷惑な訳です。ドイツ語もギリシャ語も、そして当然日本語も中国語も扱えません。アメリカ人は自国語が扱えればあとはどうでもいいのでしょうが、それ以外の国の人はなんとかしないといけません。そこで注目したのが、ASCIIコードの最上位1bitって余ってるじゃん、これ使おーぜ。てことになるわけです。そして、ASCIIコードを拡張した文字コードが、てんこもり量産されるわけです。

 次回へ続く、かも