* character encodings *

ASCII

ASCII は最も基本的な文字コードで、一般的に1文字を 7bit コードで表します。(7Bit-ASCII)

ASCII ( American Standard Code for Information Interchange / 情報交換用米国標準符号 ) は、その名の通り米国で定められた規格であり、当然米国の事情だけに合わせた文字構成になっています。

米国内で情報を表現するにはどのような文字種が必要でしょうか。

以上のような文字種があれば十分でしょう。

これらは 128 通り( 7bit )の枠内に収めることができます。

ASCII は次のような構成になっています。

0x00〜0x1f, 0x7f
制御文字
0x20
空白
0x21〜0x7e
アルファベット、数字、記号

具体的には下図のように割り当てられています。

下位4bit/上位3bit01234567
0NULTC7(DLE)SP0@P`p
1TC1(SOH)DC1!1AQaq
2TC2(STX)DC2"2BRbr
3TC3(ETX)DC3#3CScs
4TC4(EOT)DC4$4DTdt
5TC5(ENQ)TC8(NAK)%5EUeu
6TC6(ACK)TC9(SYN)&6FVfv
7BELTC10(ETB)'7GWgw
8FE0(BS)CAN(8HXhx
9FE1(HT)EM)9IYiy
aFE2(LF)SUB*:JZjz
bFE3(VT)ESC+;K[k{
cFE4(FF)IS4(FS),<Ll¦
dFE5(CR)IS3(GS)-=M]m}
eSOIS2(RS).>N^n~
fSIIS1(US)/?)_oDEL

制御文字のうち、DEL(0x7f)だけが離れた位置にありますが、これは入力装置がパンチテープだったころの名残りだそうです。

パンチテープというのは7つの所定位置に穴が空いているかどうかで 7bit を表現するものらしいです。

間違えてパンチした文字を削除したいときは、その7つの穴全部を空けて削除の印にすると大変都合がよかったということです。(1111111=0x7f)

ISO646

ASCII は米国の事情に合わせて作られた文字コードであり、他の地域の固有の字形を表記することはできません。

そこで、地域に合わせて ASCII の一部の字形を変更できるようにしたものが ISO646 です。

変更を認められているのは12文字で、具体的には次の表のように割り当てられています。

country/code0x230x240x400x5b0x5c0x5d0x5e0x600x7b0x7c0x7d0x7e
日本#$@[¥]^`{|}
アメリカ#$@[]^`{¦}~
イギリス£$@[]^`{¦}
ドイツ#$§ÄÖÜ^`äöü¨
フランス#$à°ç§^`éùèß
ノルウェー#¤ÉÆØÅÜéæøåü
スウェーデン#¤ÉÄÖÅÜéäöåü

上記のように、ISO646 ヨーロッパ諸国版ではウムラウトなどの固有の字形を割り当てられていたりします。

ISO646 日本語版では、 ASCII においてバックスラッシュが割り当てられている 0x5c に円記号が割り当てられていたりします。

これは日本語環境での MS-DOS や WINDOWS のディレクトリ区切り記号、エスケープシーケンスとしてよく利用されています。

この規格は同一地域内では問題はありませんが、同じコードなのに地域によって表示される字形が違うということで、ファイルをやりとりしたりプログラミングをするときに問題になったようです。

JIS X0201

日本語は ISO646 のように10字程度を置換するだけでは表現しきれない言語です。

そこで ISO646 日本語版を 8bit に拡張したものが JIS X0201 です。

8bit では 7bit の倍の 256 通りの情報を表現することができます。

この新しく設けた枠内 ( 0x80〜0xff ) にいわゆる半角カタカナ文字が収められました。

実際には以下のような構成になっています。

0x00〜0x7f
ISO646 と同じ
0xa1〜0xdf
半角カタカナ、濁点、半濁点、句点、読点など

具体的には次のように割り当てられています。

下位4bit/上位4bit0123456789ABCDEF
0NULTC7(DLE)SP0@P`p
1TC1(SOH)DC1!1AQaq
2TC2(STX)DC2"2BRbr
3TC3(ETX)DC3#3CScs
4TC4(EOT)DC4$4DTdt
5TC5(ENQ)TC8(NAK)%5EUeu
6TC6(ACK)TC9(SYN)&6FVfv
7BELTC10(ETB)'7GWgw
8FE0(BS)CAN(8HXhx
9FE1(HT)EM)9IYiy
aFE2(LF)SUB*:JZjz
bFE3(VT)ESC+;K[k{
cFE4(FF)IS4(FS),<Ll¦
dFE5(CR)IS3(GS)-=M]m}
eSOIS2(RS).>N^n~
fSIIS1(US)/?)_oDEL

コードページ

コードページは IBM PC 用に定められたコードで、JIS X0201 と同様に拡張されたコードです。

日本語を含め、各国語版が定義されています。

日本語の 8bit コードとしては、 JIS X0201 と同様の半角カタカナが割り当てられています。(codepage 932)

現在、codepage 932 は Shift JIS として Windows や MS-DOS で利用されています。(厳密には Shift JIS の定義と異なる部分がある)

MicrosoftのReferenceサイトで参照することができます。

ISO8859

ISO で定められた 8bit コードです。

各地域用に ISO8859-1〜ISO8859-10 の 10 種類のコードが定義されています。

ISO8859-1(Latin-1)が最も一般的に利用されています。

JISコード