Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報
トップ  >  文字コードについて

文字コードについて

簡単な前書き

コンピュータのことを昔は電子計算機とも言っていたように、コンピュータの内部では数字を足したり引いたりして、いろいろな処理を行っています。コンピュータの内部では数字しか扱えないのです。だから、コンピュータ内部では、文字も数字に置き換えて扱っています。
例えば、Aは1、Bは2、Cは3、Dは4、Eは5、・・・Hは8・・・Lは12、・・Oは15、・・・Zは26、のよう置き換えるなら、HELLOという文字列は、8 5 12 12 15みたいな感じになります。
ワープロで書いてファイルに保存した文字も、インターネットで送られてくる文字も、コンピュータの内部では全部数字に置き換えて扱われています。そして画面に表示するときや、プリンタに印刷するときに、逆に「1だからA、2だからB・・・」と文字に戻しているのです。面倒ですが、コンピュータ内部では、数字でしか扱えないので、仕方がないのです。

普通は、こんな面倒なことは意識する必要はありません。メモ帳やワードに書いた文章をハードディスクに保存するときとかに、いちいち人間が「これはAだから1にして・・」とかやっていませんよね。そんなことはコンピュータが自動的にやってくれています。

で、我々素人は、先ほどのように「Aは1、Bは2、Cは3・・・って置き換えれば簡単じゃないか」と考えるのですが、昔の学者さんや技術者さん達は、もっと別の置き換え規則を決めました。
JIS8という文字コード体系を例に挙げると、これは「A」は「65(16進数で41)」、「B」は「66(16進数で42)」のようになっています。たぶんいろいろと難しい理論を基にして置き換えの規則を考え出したのでしょう。

文字を置き換えた数字のことを、文字コードといいます。上で説明した例でいうならば、「Aは1、Bは2、Cは3・・」の1や2や3のことです。

文字というのは「A」とか「B」とか「1」とか「あ」とか「亜」とか「%」とか、まあたくさんありますね。この世の中に何種類の文字があるのか知りませんが、これらの文字をコンピュータで扱う場合も、必ずその文字に対応した数字が必要になります。
これら文字と数字の対応関係の集まりを文字コード体系とか文字セットとか言います。この集まりのことを指して単に文字コードということもあるみたいです。

この文字セット(文字コードの集まり)ですが、歴史的な背景からいくつもの種類があります。
どのような文字を『集まり』に含めるか、どのような置き換え規則にするか、です。

この文字コード体系は、普通の人は意識する必要はほとんどありません。文字コードを意識するような人は、プログラマーとかコンピュータシステムを設計する人とかだけでしょう。

1バイト文字系の文字コード体系と2バイト文字系の文字コード体系

この文字コード体系の種類の分類の仕方は、いろいろありますが、ここでは1バイト文字系の文字コード体系と2バイト文字系の文字コード体系に分けたいと思います。
(1バイト文字系とか2バイト文字系とかは、説明の都合上、私が勝手に名前を付けました。)

まず、前者の1バイト文字系の文字コード体系について説明します。
正確には、7ビットコードの文字コード体系と8ビットコードの文字コード体系のことです。
昔の本だと「ANK文字の文字コード体系」とか書かれているものです。あるいは昔のワープロの名残で、「半角文字」という人もいますが、その「半角文字」の文字コード体系のことです。

後者の2バイト文字系の文字コード体系は昔の本だと「日本語文字」とか「ダブルバイト文字」とか書かれているようです。これはいわゆる「全角文字」の文字コード体系のことになります。、最近は2バイト以外の文字コードもあるので、マルチバイト文字とかいわれることもあるようです。

何で1バイト文字系と2バイト文字系があるの?

何で1バイト文字系と2バイト文字系があるかという話をします。
はるか昔、コンピュータはアメリカだかイギリスだかその辺りで誕生しました。日本ではありません。
アメリカで使っている文字はアルファベットです。

アルファベットなら大文字が26個、小文字が26個、数字が0から9の10個、そして「.」とか「%」とか「+」とかよく使いそうな記号を10数個、合計8〜90種類の文字があれば、だいたい文章が書けてしまいます。
7ビットなら0から127までの数字表現が可能なので、最大128種類の文字を扱うことができます。8ビットなら最大256種類の文字を扱えます。つまり7ビットや8ビットの範囲で、必要な文字が全て文字コードに置き換えすることができます。

このように7ビットや8ビットの範囲で文字を文字コードに置き換えしたものが、7ビットコードの文字コード体系や8ビットコードの文字コード体系になります。

そのうちに日本でもコンピュータが使われるようになりました。
最初はこの外国で使っている7ビットや8ビットコードの文字コード体系をそのまま使いましたが、これにはアルファベットと数字ぐらいしかありません。当然日本なんだから、ひらがなとか片仮名とか漢字とか使用したいですよね。

8ビットコードの文字コード体系だと、最大256種類の文字が使用できます。さっき書いたようにアルファベットとかなら8〜90種類分しか使用しないので、まだ未使用の部分が残っています。その辺りに片仮名を割り当てたりして、当面しのいでいました。でも漢字は何千種類もあるので8ビットじゃ全然足りません。

そこで漢字を含む日本語文字を使用できるような文字コード体系を作ろうということで、2バイト文字系の文字体系がが誕生しました。
2バイトなら0から65535までの範囲の数字を表現できるので、最大で65536種類の文字を扱うことができます。
(日本以外にも韓国語とか中国語とか、1バイトの範囲であらわすことのできない言語はたくさんあるのですが、それらの話は省略して、日本の範囲で説明しています。)

このように1バイト系と2バイト系の文字コード体系が誕生しました。1バイト系(つまり半角文字ね)の文字コード体系は、アルファベットと数字と幾つかの種類の記号文字(と片仮名)の集まりで、2バイト系(つまり全角)の文字コード体系は、アルファベットと数字と記号文字と平仮名と片仮名と漢字などの集まりになります。
半角文字/全角文字の話をすると、「A」や「1」は半角文字で、「A」や「1」は全角文字です。
だからアルファベットや数字(や片仮名)は半角文字と全角文字の2種類があって、漢字や平仮名は全角文字しかないのです。
(ごく一部の2バイト文字系の文字コード体系には、擬似的に半角文字っぽい文字を追加して、2バイト文字なのに見え方は1バイト文字という「全角文字の半角文字」みたいなよくわからないものもあったりしますが・・・。)