文書の表現方法 ~文字列と文字コード~
ここまでの説明で、パソコンが扱う情報は二進数という「数字」のみであると理解できたと思います。「じゃあ、数字しか扱えないパソコンがどうやって文書を扱えるの?」――いよいよ今回の核心に迫ってきました。
文書とはいったい何でしょうか? 「文字を紙に書いたものじゃない?」 でも、パソコンのワープロソフトや表計算ソフトで書いたものも文書って言いますよね? それに、人類の長い歴史の中では、粘土板や動物の皮の上に書かれていても文書ではないでしょうか。「うーん……」
そこで「文書」の定義を「文字の羅列である」とすれば、パソコンでも粘土板でも当てはまることになります。つまり、文字の羅列を数字で表現することができれば、パソコンで文書を扱えることになります。
皆さんはモールス符号をご存じでしょうか? 映画「タイタニック」で、通信担当の船員がキーを叩いて近くを航行する船に向けて送ったSOS信号、あれがモールス符号です。モールス符号を送る通信機は、短い信号「・」(トン)と、長い信号「-」(ツー)を送る機能しかありません(モールス符号には「トンツー」という通称もあります)。モールス信号では、国際的な約束事で文字「S」は「・・・」、文字「O」は「― ― ―」で表すことになっています。つまり「・・・― ― ― ・・・」とキーを叩けば、「SOS」という文字の列を無線で送信できるわけです。
パソコンは数字しか扱えませんが、モールス符号が個々の文字を信号の組み合わせで表す約束事をしているのと同じように、個々の文字を数字に置き換える約束事を作れば文字を扱えるようになります。それでは、下の表のような約束事(対応表)を作って文書を表現してみましょう。
たとえば「ASCII2008」という文字列が書かれた文書は、この約束事に従えば「1, 19, 3, 9, 9, 28, 36, 36, 34」という数字の列として表現できます。これらの数字はすべて0~255の範囲に収まっているので、それぞれメモリービルの1フロア(1バイト)に収納できます。メモリービルの1階~10階が空いているならば、この数字をそれぞれ二進数に置き換えて1階から順番に収納していけば、文書をパソコンに蓄えたことになります。
「ちょっと待った。そんな簡単な約束事だけで世の中の文書を表現できるとは思えないよ。句読点やいろんな記号はどうやって表すんだ? それに、文書には段落や字下げなんかも必要じゃない?」―――おっしゃる通り、先ほど示した対応表だけでは全然足りません。英語の文書ならば、文字の数はせいぜい100個程度なので1文字1バイトで表現できますが、日本語には数千個を超える文字があるので1バイトでは収まりません。それでは、下の表のように対応表を拡張してみましょう。
1バイトでは足りないのであれば、1文字を2バイトで表現することにすれば、6万5536通り(0~6万5535)の文字を扱えるので日本語もOKです。また、句読点や記号だけでなく、段落の区切りや字下げを示す特別な文字を含めてみました。
「めでたしめでたし。これで世界中の文書を扱えるようになったな」――― ちょっと待った。大事なことを忘れていませんか? パソコンで文書を扱うことの特長の一つは、「他の人と文書をやりとりできる」ことです。先の2つの対応表は私が勝手に決めた約束事なので、この約束事にしたがって文書を表現しても、誰にも読んでもらえない可能性大です。これではちょっと寂しいですよね。
そこでパソコンの先人たちは、「みんなで共通に使える約束事」を決めることで、文書をお互いにやりとりできるようにしました。この「共通の約束事」を「文字コード」と呼んでいます。文字コードを使うことで、市販のワープロソフトで文書を印刷したり、電子メールで送ったり、ホームページで文書を公開できるようになります。以下は、世界でもっとも普及している文字コードである ASCIIの対応表です。
ASCIIコードの表には、英語の文書を表現するには十分な文字が含まれています。現在、世界中のほとんどのパソコンはこのASCIIに対応しています。同じように、日本語の文字についても同じように「共通の約束事」としての文字コードが決められています。以下に、JIS(日本工業規格)で決められている文字コードの対応表の一部を示します。前に書いた通り、日本語の文字は1文字1バイトでは表現できないので、1文字2バイトで表現されています。