睡人亭

文字コード入門

ASCIIとJISローマ字

ASCIIコード

アルファベット及び数字用の文字コードです。1963年、米国規格協会 (ANSI) が制定しました。

ASCIIとは、American Standard Code for Information Interchangeの頭文字をそれぞれ取った略称になります。

通常、7ビットを一つの単位(128文字を収録)としますが、コンピュータの情報単位として8ビットを使用する場合には、最上位桁に0を加えます(0+7ビットの形式)。

ASCIIコード128文字の内、94文字がアルファベット・数字・記号などの印刷可能な文字、残りの34文字は空白文字(SP)と制御記号(赤色の背景のもの)になります。ちなみに、削除をあらわすDELが一番最後になっているのは、紙テープ時代の名残だそうです(こちらを参照)。

ASCIIを元に、国際規格のISO 646が制定されました(ISOは、International Organization for Standardization 国際標準化機構の略)。但し、ASCIIで定義された文字のうち、12文字(上表で薄緑色の背景になっているもの)をそれぞれの国の事情に応じて、適当な文字列に変更可能となりました。

例えば日本JIS X 0201-1976の場合、5Cのバックスラッシュ[\]を円マーク[¥]に、7Eのチルダ[~]をオーバーライン[]にそれぞれ変更しています。

日本と同じく、各国で変更領域を独自に書き換えを行ったため、同じ文字が違うビット列で表現されるという問題が発生しました。そのため、それぞれの文字コードを指定したり切り替えたりする方法が求められるようになったのです。

ASCIIコードの文字表
  0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2 SP ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL

拡張ASCII(ISO8859)

ASCIIはアメリカで制定された規格ですので、ウムラトやキリル文字には対応していませんでした。そのため、各国で独自にASCIIを拡張して他の欧州言語で用いるアクセント記号付きの文字やキリル文字・アラビア文字などを表せるようにしたのが、拡張ASCIIです。後述の日本語用ASCIIも、拡張ASCIIの一種です。

ISOでも、拡張ASCIIの規格をいくつか制定していますが、その中ではISO 8859がよく知られています。

ISO8859は8ビットを単位として運用されます。ASCIIを8ビット単位で利用する場合に、常に0であった最上位の桁を利用することで256文字までを利用可能とし ました。文字表の配列上、元のASCIIを左半分、拡張部分を右半分に配列しています。

各文字集合毎にエスケープシーケンスと呼ばれる特殊なビット列を使用することで、文字集合を切り替えています。

ISO8859は第1部から第10部までの10種類ありますが、主に使用されるのは第1部(Latin alphabet No. 1)になります。

  1. 第一部:西欧で使用される文字が中心
  2. 第二部:東欧・中欧で使用される文字
  3. 第三部:トルコ文字
  4. 第四・十部:北欧
  5. 第五部:キリル文字
  6. 第六部:アラビア文字
  7. 第七部:ギリシア文字

このように、ISO8859や他の拡張ASCIIを利用して、英米語圏以外の文字をコンピュータで扱えるようにする試みが行われてきましたが、言語を指定して切り替えることで多言語混在や、8ビットでは収録可能な文字数が少なすぎることなど、根本的な点で問題が解決したわけではありませんでしt。そのため、各国独自の文字コードの規格化とは別に、一つの文字コードで混在できるような環境が模索されるようになりました。それが、ISO10646やUnicodeの制定という形で実現することとなります。

日本語用ASCII

日本語用の文字コードとして最初に制定されたのがJIS X 0201です。ISO 646に対応する国内規格として制定されました。正式名称は「7ビット及び8ビットの情報交換用符号化文字集合」になります。JISという名称からわかるとおり、これは日本工業規格の一環として制定されています(制定:1969 改訂:1976、1997 日本規格協会の該当規格情報)。

日本語用ASCIIは、7ビットもしくは8ビットで利用可能です。

数値・アルファベットなど、ラテン文字用図形文字集合の大部分はASCIIの文字セットと同じですが、先にも書いたとおりISO 646が独自割り当てを認めている範囲で文字を入れ替えています。

5C:バックスラッシュ(\)→円記号(¥)

7E:ティルダ(~)→オーバーライン(

この規格では、1バイト仮名63文字の片仮名図形文字集合も合わせて定義されました。これがいわるゆ「半角カナ」と呼ばれるものです。この半角カナは後年、様々な問題を引き起こすことになりました(半角カナをキーワードにGoogleで検索)。

JIS X 0201:ラテン文字用図形文字集合
0 1 2 3 4 5 6 7 8 9 A B C D E F
2 ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ ¥ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | }
JIS X 0201:片仮名図形文字集合(但し8bit単位で運用する場合)
0 1 2 3 4 5 6 7 8 9 A B C D E F
A
B ソ
C
D

制御記号について

制御記号とは、画面や印刷時には表示されないものの、情報処理上不可欠な機能を特定のコード番号に割り当てたものを指します。各制御記号の説明は以下の表を参照してください。

制御記号一覧
コード名 名称 説明
NUL NULL ヌル
SOH Start Of Heading ヘッダ開始
STX Start of Text テキスト開始
ETX End of Text テキスト終了
EOT End Of Transmission 転送終了
ENQ ENQuiry 問い合せ
ACK Acknowledge 肯定応答
BEL Bell ベル
BS Back Space 後退
HT Horizontal Tabulation 水平タブ
LF Line Feed 改行
VT Vertical Tabulation 垂直タブ
FF Form Feed 改ページ
CR Carriage Return 復帰
SO Shift Out シフトアウト
SI Shift In シフトイン
DLE Data Link Escape 伝送制御拡張
DC1 Device Control 1 装置制御1
DC2 Device Control 2 装置制御2
DC3 Device Control 3 装置制御3
DC4 Device Control 4 装置制御4
NAK Negative Acknowledge 否定応答
SYN Synchronous idle 同期信号
ETB End of Transmission Block 転送ブロック終了
CAN Cancel 取消
EM End of Medium 媒体終端
SUB Substitute 置換
ESC Escape 拡張
FS File Separator ファイル分離
GS Group Separator グループ分離
RS Record Separator レコード分離
US Unit Separator ユニット分離
SPC Space 空白
DEL Delete 削除

いわゆる全角半角文字について

コンピュータが英数字として認識できるのは、基本的にASCIIで定義された文字のみです。ところで、JIS漢字コードにはそれとは別に2バイトの英数字が存在 します。

2バイト英数字一覧
  1 2 3 4 5 6 7 8 9 10 A B C D E F
2330            
2340  
2350          
2360  
2370          

両者は見かけ上、同じ英数字に見えます。特に括弧などは、プロポーショナルフォントを使用した場合、その差異の見極めが難しくなります。

しかし、コンピュータ内部ではそれぞれ異なったビット列が割り当てられていますので、当然両者は違う文字として扱われます。

プロポーショナルフォント:文字毎に幅が異なるフォント
IWの文字幅は違います。
全角の
半角の(
等幅フォント:文字全ての幅が同じフォント
IWの文字幅は同じになります。
全角の
半角の
1byteの英数字(いわゆる「半角」英数字)
メールのアドレスや英文メールの本文、Excelでデータを操作する場合には、こちらを使用します。
2byteの英数字(いわゆる「全角」英数字)
メールアドレスや英文メールに2byteの英数字を使っても、コンピュータでは英数字と認識してくれません。ちなみにExcelでは、2バイト数字を入力すると自動的に1バイトに変換してくれます。
ただし、縦書き文書やビジネスの定型文書の場合、2byteの英数字が推奨される場合もあります。これらはあくまでも印刷時の見栄えを重視する必要上選択されています。

授業では、1byte英数字を「半角(英数字)」、2byte英数字を「全角(英数字)」と呼ぶ場合があります。

英数字を入力する場合は、できるだけ半角英数字を使いましょう。印刷もその方が綺麗になります。

MS-IMEの入力モードを[半角英数]もしくは[直接入力]モードにすれば、半角英数字が入力可能になります。あるいは、[半角/全角]キーを押してIMEをOFFにしてもかまいません。

実際にはオペレーティングシステムで扱われる文字コードの主流がUnicodeに移っているため、1byte,2byte英数字という表示そのものも正確では ありませんが、ここでは便宜的に[全角][半角]で呼んでおきます。