18.4.1.1 ASCII と JIS 仮名

具体的にどのように文字とビット列が対応するのかを見ていきましょう.まずは,各文字に対応するビット列が高々 1 バイト(8 ビット)のものです.

ASCII

世界で広く用いられている文字コードには ASCII(American Standard Code for Information Interchange,アスキー)と呼ばれるものがあります.これは文字集合と符号化を共に定めており,7 ビットで文字を表します.ASCII で定義されている文字はアルファベットや数字や記号,制御文字などですが,7 ビットを用いていますので 27 = 128 文字を表すことができます.1バイトが 8 ビットのコンピュータでは,下位 7 ビットのみを使って 1 バイトで 1 文字を表し,最上位ビットは使いません(0 にします).

0123456789ABCDEF
0NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSI
1DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS
2SP!#$%&()*+,./
30123456789:;<=>?
4@ABCDEFGHIJKLMNO
5PQRSTUVWXYZ[\]^_
6`abcdefghijklmno
7pqrstuvwxyz{|}~DEL

これは ASCII の符号表で,文字とビット列の対応を示しています.左端の数は 7 ビットのうちの上位 3 ビットを,上端の数は下位 4 ビットをそれぞれ 16 進数で表したものです.例えば,28(16) = 0101000(2) は「(」,41(16) = 1000001(2) は「A」,69(16) = 1101001(2) は「i」に対応していることがわかります.
表を見るとわかるように,いくつかの区画に分かれています.

00(16)~1F(16)制御文字
20(16)スペース
21(16)~7E(16)通常の文字
7F(16)制御文字(削除)

(「削除」以外の)制御文字 (control character) が先頭に集められ,その後に通常の文字が来て,最後に「削除」の文字が来ています.

tipsちなみに「削除」を 2 進数で表すと 1111111(2) に対応させたことには歴史的由来があり,それが三上喜貴『文字符号の歴史 アジア編』(共立出版)に記されています.「全部 1 」はパンチカードでいえば全てに穴が空いたものに対応します.パンチカードで打ち間違えた時には全てに穴を空けて「削除」を意味していたところから,特別な文字として「削除」がこの位置に定義されたのだそうです.また,数字やアルファベットは文字順に連続して並んでいますが,当時としては画期的なことでした.

ASCII 登場後に,国際規格として ISO 646 と呼ばれる規格が登場しました.これは ASCII (の制御文字を除いた部分)とほとんど同じですが,一部の文字に関しては国/言語ごとに入れ替えを可能としたものです.ASCII は ISO 646 のアメリカ版であると考えることができます.しかし, ISO 646 のうちの国際基準版というもので ASCII と同じ文字集合が規定されており,アメリカ一国だけでなく国際的に使える文字コードだと言えます.

JIS X 0201

JIS X 0201 は,ISO 646 の日本版(JIS ローマ字)と,カタカナ(JIS 仮名半角カナ)を含んだ文字集合です.文字集合とは言っても,各文字にはわかりやすいように 8 ビットの番号が振られています.大雑把に言うと,次のような構成です.

  • 8 ビットのうち,最上位のビットが 0 の部分には,ISO 646 の日本版が収められています.
  • 一方,最上位ビットが 1 の部分には,日本独自のカタカナが収められています.

「下半分」の ISO 646 の日本版は,次のようになっています.ASCII(の制御文字を除いた部分)からは,5C(16), 7E(16) の2 文字がそれぞれ円記号,オーバースコア(上付き線)と変わっており,あとは同じです.hwb7.3 文字コード にも,画像で JIS X 0201 の文字のリストを載せてあります.

0123456789ABCDEF
2SP!#$%&()*+,./
30123456789:;<=>?
4@ABCDEFGHIJKLMNO
5PQRSTUVWXYZ[¥]^_
6`abcdefghijklmno
7pqrstuvwxyz{|}DEL

一方,「上半分」の JIS 仮名は,以下のようになっています.実際に定義されているのは,A1(16) から DF(16)の部分です.

0123456789ABCDEF
A
Bソ
C
D

この JIS X 0201 に属する文字は,伝統的に縦横比が 2:1 の字形で表示されていました.そのため,これらの文字を半角文字と呼ぶ場合があります(文字コードで半角全角が定まっているわけではありません).特に,JIS 仮名のことを半角カナと呼ぶことがあります.

ISO-8859-1

ASCII は英語を使った文章のやりとりには十分ですが,アクセント記号やその他の文字を使うドイツ語・フランス語などには向きません.ISO/IEC 8859 と呼ばれる規格では,これらの欧州諸言語のための文字コードを 15 種類(ISO 8859-1 から 16 まで.12 は欠番)定めています.
ISO/IEC 8859 規格の文字コードは,JIS X 0201 と同じように 8 ビットの構成となっており,最上位ビットが 0 の部分には ISO 646 国際基準版(つまり,ASCII の制御文字でない部分)がそのまま,残りの最上位ビットが 1 の部分で追加の文字を規定するような構造です.特によく使われるのは,ISO-8859-1 と,それにユーロ記号追加などの修正を行った ISO-8859-15 です.