「文字コードのはなし」の連載その3、「ASCIIのはなし」です。
もくじ
– Shift_JISのはなし
– 文字コードのはなし
– ASCIIのはなし(本稿)
– Unicodeのはなし
– UTFのはなし
– BOMのはなし
ASCIIのはなし
またも寄り道ですが、本題のUnicodeのことを話す前に、文字コードのすべての原点である「ASCIIコード」の話をしたいと思います。
もともとコンピュータは欧米で開発され、また使用されることがほとんどであったため、コンピュータで使う文字はラテン文字(a, b, c, …)が表現できれば十分でした。このラテン文字と、アラビア数字(0, 1, 2, …)、それに加えて記号を少々と、更にコンピュータ固有の制御文字を含んだ文字集合が、かの有名な「ASCII(アスキー)」です。下に示すのがASCIIが含む全文字の表です。
ピンクに塗られた部分はコンピュータの制御文字です。表を見て分かる通り、ASCIIに収録されている文字は上位3bitと下位4bitの合計7bitで表されます。すなわち、2の7乗=128文字まで収録できる文字集合なわけです。ですから上の画像で全てを紹介できてしまうくらいの数しかないのです。例えば「A」は「41(16進数)」と表すことができます(2進数で表すと、0100 0001 です)。
「ん?8bit規格にすれば倍の数の文字が収録できるのでは?」とお思いの方、たしかにASCIIを8bit規格にすれば、2の8乗、つまり256文字収録できますから、後から「この文字足して!」なんていう依頼が来ても対応できます。そもそもこのASCIIが策定された頃には、ほとんどのコンピュータが8bitを一単位として制御するCPUを積んでいたらしいので、ASCIIを8bit規格にするのも理にかなっていると言えそうです。
しかし当時はPCのスペックも高くなく節約節約の時代ですから、表したい文字がアルファベット+数字+記号の100文字弱に対して、8bit割り当てるのはいささか大げさではないか、ということになったのだと思います。「6bit(=64文字)?足りない。8bit(=256文字)?ちょっと多い。7bit(=128文字)?ちょうどいい!」ということです(実際には、8bit目をパリティビットというエラー検出用のメモリに割当て、8bit全てを使用している…という話もありますが、ここでは割愛させていただきます)。
ただし、「8bitにしたASCII」と言って差し支えないものも実は存在します。
まずASCIIは米国での利用を想定していたため、このまま他国で使用するとなると、必要・不要な記号が出てきました。そこで国際標準化機構「ISO」は、「いくつかの記号(#$[/]^{|}~)を自国に適当なものに変えていいよー」という”おふれ”を出し、それをISO646と命名、策定しました。これにしたがって各国は、それぞれの国で使用する記号をASCIIで収録されていた記号と交換して、自国の国家規格で次々と策定しました。
しかし、やはりラテン文字以外を使う諸国ではラテン文字以外も表すことが必要だったようで、国際標準化機構と国際電気標準会議(ISO/IEC)がASCIIの7bitにもう1bit追加して128文字分増やして使えるぜ!と、ISO/IEC 8859という規格を策定しました。ただ、ラテン文字以外のすべての文字をこの128枠に入れることは不可能なので、ISO/IEC 8859-1(西ヨーロッパ)、ISO/IEC 8859-2(中央ヨーロッパ)…のように言語・エリアごとに規格番号がふられています。これを俗に「拡張ASCII」と呼び、「8bitにしたASCII」と言えるものが誕生しました。
この拡張ASCII、実は日本語版も存在しています。日本では、上に出てきた「ISO646」と「ISO/IEC 8859」にしたがって、日本工業規格「JIS」が「JIS X 0201」という名前の規格を策定しました。このJIS X 0201は、「ISO646」に倣って、ASCIIに収録されている記号の「\(バックスラッシュ)」を「¥(エン)」に、「~(チルダ)」を「‾(オーバーライン)」に変更しました。
また、「ISO/IEC 8859」に倣って、ASCII文字外の128文字の枠の中にカタカナを定義しました。そのためこのJIS X 0201は、俗に「JISカタカナ」と呼ばれています。もしくは、収録文字である「Alphabet」「Numerical digit」「Katakana」の頭文字を取って、ANKコードとも呼ばれています。下の表は、追加されたカタカナの一覧です(※灰色部分は未定義)。
これでようやくカタカナが使えるようになり、日本語でのやりとりが初めて可能となりました。ちなみにこいつのせいで半角カタカナという厄介な文字が後に世を席巻します。
ところで、これまで見てきた通りASCIIにはラテン文字と数字と記号しか含まれていないため、例えば以下のようなものは「アスキーアート」とは厳密には呼べないんですね。
上記のような文字アートは、国外では「アスキーアート」と区別して「Shift_JIS art」と呼ばれているみたいです。