ASCII は最も基本的な文字コードで、一般的に1文字を 7bit コードで表します。(7Bit-ASCII)
ASCII ( American Standard Code for Information Interchange / 情報交換用米国標準符号 ) は、その名の通り米国で定められた規格であり、当然米国の事情だけに合わせた文字構成になっています。
米国内で情報を表現するにはどのような文字種が必要でしょうか。
以上のような文字種があれば十分でしょう。
これらは 128 通り( 7bit )の枠内に収めることができます。
ASCII は次のような構成になっています。
具体的には下図のように割り当てられています。
下位4bit/上位3bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
0 | NUL | TC7(DLE) | SP | 0 | @ | P | ` | p |
1 | TC1(SOH) | DC1 | ! | 1 | A | Q | a | q |
2 | TC2(STX) | DC2 | " | 2 | B | R | b | r |
3 | TC3(ETX) | DC3 | # | 3 | C | S | c | s |
4 | TC4(EOT) | DC4 | $ | 4 | D | T | d | t |
5 | TC5(ENQ) | TC8(NAK) | % | 5 | E | U | e | u |
6 | TC6(ACK) | TC9(SYN) | & | 6 | F | V | f | v |
7 | BEL | TC10(ETB) | ' | 7 | G | W | g | w |
8 | FE0(BS) | CAN | ( | 8 | H | X | h | x |
9 | FE1(HT) | EM | ) | 9 | I | Y | i | y |
a | FE2(LF) | SUB | * | : | J | Z | j | z |
b | FE3(VT) | ESC | + | ; | K | [ | k | { |
c | FE4(FF) | IS4(FS) | , | < | L | \ | l | ¦ |
d | FE5(CR) | IS3(GS) | - | = | M | ] | m | } |
e | SO | IS2(RS) | . | > | N | ^ | n | ~ |
f | SI | IS1(US) | / | ? | ) | _ | o | DEL |
制御文字のうち、DEL(0x7f)だけが離れた位置にありますが、これは入力装置がパンチテープだったころの名残りだそうです。
パンチテープというのは7つの所定位置に穴が空いているかどうかで 7bit を表現するものらしいです。
間違えてパンチした文字を削除したいときは、その7つの穴全部を空けて削除の印にすると大変都合がよかったということです。(1111111=0x7f)
ASCII は米国の事情に合わせて作られた文字コードであり、他の地域の固有の字形を表記することはできません。
そこで、地域に合わせて ASCII の一部の字形を変更できるようにしたものが ISO646 です。
変更を認められているのは12文字で、具体的には次の表のように割り当てられています。
country/code | 0x23 | 0x24 | 0x40 | 0x5b | 0x5c | 0x5d | 0x5e | 0x60 | 0x7b | 0x7c | 0x7d | 0x7e |
---|---|---|---|---|---|---|---|---|---|---|---|---|
日本 | # | $ | @ | [ | ¥ | ] | ^ | ` | { | | | } | — |
アメリカ | # | $ | @ | [ | \ | ] | ^ | ` | { | ¦ | } | ~ |
イギリス | £ | $ | @ | [ | \ | ] | ^ | ` | { | ¦ | } | — |
ドイツ | # | $ | § | Ä | Ö | Ü | ^ | ` | ä | ö | ü | ¨ |
フランス | # | $ | à | ° | ç | § | ^ | ` | é | ù | è | ß |
ノルウェー | # | ¤ | É | Æ | Ø | Å | Ü | é | æ | ø | å | ü |
スウェーデン | # | ¤ | É | Ä | Ö | Å | Ü | é | ä | ö | å | ü |
上記のように、ISO646 ヨーロッパ諸国版ではウムラウトなどの固有の字形を割り当てられていたりします。
ISO646 日本語版では、 ASCII においてバックスラッシュが割り当てられている 0x5c に円記号が割り当てられていたりします。
これは日本語環境での MS-DOS や WINDOWS のディレクトリ区切り記号、エスケープシーケンスとしてよく利用されています。
この規格は同一地域内では問題はありませんが、同じコードなのに地域によって表示される字形が違うということで、ファイルをやりとりしたりプログラミングをするときに問題になったようです。
日本語は ISO646 のように10字程度を置換するだけでは表現しきれない言語です。
そこで ISO646 日本語版を 8bit に拡張したものが JIS X0201 です。
8bit では 7bit の倍の 256 通りの情報を表現することができます。
この新しく設けた枠内 ( 0x80〜0xff ) にいわゆる半角カタカナ文字が収められました。
実際には以下のような構成になっています。
具体的には次のように割り当てられています。
下位4bit/上位4bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | NUL | TC7(DLE) | SP | 0 | @ | P | ` | p | ||||||||
1 | TC1(SOH) | DC1 | ! | 1 | A | Q | a | q | ||||||||
2 | TC2(STX) | DC2 | " | 2 | B | R | b | r | ||||||||
3 | TC3(ETX) | DC3 | # | 3 | C | S | c | s | ||||||||
4 | TC4(EOT) | DC4 | $ | 4 | D | T | d | t | ||||||||
5 | TC5(ENQ) | TC8(NAK) | % | 5 | E | U | e | u | ||||||||
6 | TC6(ACK) | TC9(SYN) | & | 6 | F | V | f | v | ||||||||
7 | BEL | TC10(ETB) | ' | 7 | G | W | g | w | ||||||||
8 | FE0(BS) | CAN | ( | 8 | H | X | h | x | ||||||||
9 | FE1(HT) | EM | ) | 9 | I | Y | i | y | ||||||||
a | FE2(LF) | SUB | * | : | J | Z | j | z | ||||||||
b | FE3(VT) | ESC | + | ; | K | [ | k | { | ||||||||
c | FE4(FF) | IS4(FS) | , | < | L | \ | l | ¦ | ||||||||
d | FE5(CR) | IS3(GS) | - | = | M | ] | m | } | ||||||||
e | SO | IS2(RS) | . | > | N | ^ | n | ~ | ||||||||
f | SI | IS1(US) | / | ? | ) | _ | o | DEL |
コードページは IBM PC 用に定められたコードで、JIS X0201 と同様に拡張されたコードです。
日本語を含め、各国語版が定義されています。
日本語の 8bit コードとしては、 JIS X0201 と同様の半角カタカナが割り当てられています。(codepage 932)
現在、codepage 932 は Shift JIS として Windows や MS-DOS で利用されています。(厳密には Shift JIS の定義と異なる部分がある)
MicrosoftのReferenceサイトで参照することができます。
ISO で定められた 8bit コードです。
各地域用に ISO8859-1〜ISO8859-10 の 10 種類のコードが定義されています。
ISO8859-1(Latin-1)が最も一般的に利用されています。
JISコード