ここに挙げたのは、「ASCII(アスキー)コード」 という「コンピュータに文字を表示・印字させるためのコード」です(正確に言うと、「コンピュータ間でデータをやりとりするためのコード」です)。ASCIIコードとは、ASCII(American Standard Code for Infomation Interchange:米国標準文字コード表)が定めるコードで、俗に言う半角文字のことです。これらの文字は、相手のコンピュータが文字を表示できるものであれば必ず読める文字です。

この一覧のうち、ASCII 0〜31と127(16進数で00〜1fと7f)は「コントロール・コード(制御文字)」と呼ばれ、コンピュータの表示や印字を制御するためのコードに割り当てられています。

いわゆる「半角カナ」と呼ばれる文字は、JIS(Japan Industory Standard:日本工業規格)で定められたJISコード(JIS X 0201-1976、旧JIS C 6220)ではASCIIコードを拡張した領域(128〜255、16進数で80〜ff)のうち、161〜223(16進数でa1〜df)に規定されており、Windows(MS-DOS、OS/2を含む)やMacintoshのようなShift-JISコードを用いるマシンのみを使ったシステムで構築された、社内イントラネットのような閉じられたネットワークでもない限り、使用すべきではないとされています。UNIX系ワークステーションなどのEUC(Extended Unix Code:拡張UNIXコード)を用いるシステムでは、2バイトコード(俗に言う全角文字)との区別がつきにくく、文字化けを起こしやすいためです。

なお、標準的なEメールは半角カナを含まないISO-2022-JPというコード体系を使用してやり取りしていますので、半角カナを用いてはなりません。ただし、最近のメールクライアントソフト(Eメールをやりとりする為のアプリケーションソフト)では、半角カナを自動的に全角カナに変換する機能を持っているようです。

かつてのNIFTY-SERVE(現@nifty)のフォーラム会議室のように、単一なネットワークであるパソコン通信ならば問題はありませんでした。しかし、現在の@niftyはインターネットからも閲覧できるようになっており、半角カナの使用は制限されるべきなのかもしれません。

iモードをはじめとする携帯電話は半角カナに対応しています。そのため、これら向けのページでは、転送データ量を節約するために半角カナを用いることが推奨されています。(2001.5.29 追記)

現在使われている多くのWebブラウザ(インターネット閲覧ソフト)は半角カナに対応しており、障害が起こることはほとんどありません。しかし、古くからのユーザーの中には半角カナの使用を毛嫌いする方もいます。使用を許可されているページ以外ではなるべく使用しない方がいいでしょう。(2005.4.28 追記)

10
8
16

000000NUL
100101SOH
200202STX
300303ETX
400404EOT
500505ENQ
600606ACK
700707BEL
801008BS
901109HT
100120ANL
110130BVT
120140CNP
130150DCR
140160ESO
150170FSI
1602010DLE
1702111DC1
1802212DC2
1902313DC3
2002414DC4
2102515NAK
2202616SYN
2302717ETB
2403018CAN
2503119EM
260321ASUB
270331BESC
280341CFS
290351DGS
300361ERS
310371FUS
10
8
16

3204020SP
3304121!
3404222"
3504323#
3604424$
3704525%
3804626&
3904727'
4005028(
4105129)
420522A*
430532B+
440542C,
450552D-
460562E.
470572F/
48060300
49061311
50062322
51063333
52064344
53065355
54066366
55067377
56070388
57071399
580723A:
590733B;
600743C<
610753D=
620763E>
630773F?
10
8
16

6410040@
6510141A
6610242B
6710343C
6810444D
6910545E
7010646F
7110747G
7211048H
7311149I
741124AJ
751134BK
761144CL
771154DM
781164EN
791174FO
8012150P
8112251Q
8212352R
8312353S
8412454T
8512555U
8612656V
8712757W
8813058X
8913159Y
901325AZ
911335B[
921345C\
931355D]
941365E^
951375F_
10
8
16

9614060`
9714161a
9814262b
9914363c
10014464d
10114565e
10214666f
10314767g
10415068h
10515169i
1061526Aj
1071536Bk
1081546Cl
1091556Dm
1101566En
1111576Fo
11216070p
11316171q
11416272r
11516373s
11616474t
11716575u
11816676v
11916777w
12017078x
12117179y
1221727Az
1231737B{
1241747C|
1251757D}
1261767E~
1271777FDEL
  1. ASCII 0〜31、及び127は制御コードです(下記参照)。
  2. ASCII 32の「SP」はブランク(空白)を表します。制定時は制御コードでしたが、現在では「文字」とされています。
  3. ASCII 92の「¥」(円記号)は、本来のASCIIでは「\」(バックスラッシュ)となります。JIS C 6228(現JIS X 0202)で「¥」とされました。
  4. ASCII 126の「〜」(チルダ)は、JIS C 6228(現JIS X 0202)では「 ̄」(オーバーライン)と規定されています(JISキーボードにもそう刻印されています)。しかし、Windows標準のフォントでは「〜」となっているため、初心者の混乱の元となっているようです。

制御コード(制御文字)

以下は小林龍生、安岡孝一、戸村哲、三上喜貴編「bit別冊─インターネット時代の文字コード」(共立出版)から引用した。ただし、一部修正してある。

  • SPSpace(空白)

    空白を表す制御文字である。タイプライターやテレタイプでは空白を「打つ」のではなく、単に印字ヘッドを右に移動させるだけの動作であることから、制御文字として定義されている。なお、SPは単に空白を表しているだけではなく、単語と単語を隔てているものだとASCIIでは考えている。この点についてはFSとGSとRSとUSの項を参照されたい。

  • BSBack Space(1文字後退)

    SPの逆の動作を表す制御文字である。タイプライターやテレタイプでは印字ヘッドを左に移動させる制御文字であり、アクセント記号の合成やアンダーラインに用いられることが想定されていた。すなわち、タイプライターを打つときのように、アクセント記号を打ってからBSで1文字戻して、さらに必要な文字を打てばよいと考えられていたのである。アクセント記号の使い方として想定されていたものの例を図1に示す。

    Á = ' BS A = 27 08 41
    ì = ` BS i = 60 08 69
    ê = ^ BS e = 5E 08 65
    ç = , BS c = 2C 08 63
    ñ = ~ BS n = 7E 08 6E
    ø = / BS o = 2F 08 6F
    Ü = " BS U = 22 08 55
    We = _ BS W _ BS e = 5F 08 57 5F 08 65

    図1.アクセント合成とアンダーライン

  • CRとLFCarriage Return(復帰)、Line Feed(改行)

    CRは、印字ヘッドを行の最初に戻すための制御文字である。LFは、紙を1行分送るための制御文字である。タイプライターやテレタイプにおいては、ピンチローラーを右端まで動かす(印字ヘッドが行の最初に来るようにする)動作と行送りの動作とが独立に行えるようになっているので、それぞれに制御文字が用意されているのである。

  • HTHorizontal Tabulation(水平タブ)

    印字ヘッドをタブマージンと呼ばれるところまで右に移動する制御文字である。タイプライターやテレタイプにおいては、通常8文字ごとにタブマージンが設定されていて、そこまで印字ヘッドを移動させるためのタブキーが準備されていた。このタブキーと同じ動作をさせるための制御文字である。

  • VTVertical Tabulation(垂直タブ)

    垂直タブマージンと呼ばれるところまで行送りを行う制御文字である。水平方向のHTに対応する垂直方向の移動を想定していたようだが、実際にはあまり使用されなかったようである。

  • FFForm Feed(改ページ)

    紙を1枚分送ってしまって、次の紙の最初の行に印字ヘッドを合わせる制御文字である。

  • BELBell(ベル)

    ベルを鳴らすための制御文字である。テレタイプなどのタイプライター型の端末では、端末の近くの人間を呼ぶ際に非常に重宝したようである。

  • SOとSIShift Out(シフトアウト)、Shift In(シフトイン)

    印字フォントの切り換えを意図して準備された制御文字である。すなわち、2つの印字ボールが搭載できるようなテレタイプにおいて、SOで特殊用途の印字ボールに切り換えて、SIで通常の印字ボールに戻すことを想定していたものである。これによって、たとえば強調文字への切り換えや、あるいはまったく別の記号印字ボールなどを使用できるように考えられていたものである。ただし、SOとSIの意味は、ISO 2022の登場によって変更されてしまった。

  • NULとDELNull(空文字)、Delete(削除)

    NULとDELは同一の意味を持つ制御文字である。これらの制御文字がデータ中に入っていても、データの内容には何の影響も与えず、無視してよいということになっている。では、このような無視してよい制御文字が2種類もあることにどのような意味があるのだろうか。紙テープ上のデータを例に考えてみよう。

            ○ ○   ○ ○   ○ ○ ○   ○
            ○ ○ ○ ○   ○ ○   ○ ○ ○
              ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○
            ○     ○     ○   ○
              ○ ○     ○         ○ ○
    ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・
            ○                 ○ ○ ○
                  ○     ○       ○ ○
                ○ ○   ○ ○     ○
            T h i s  i s  p e n .

    図2.紙テープ上の「This is pen.」

    図2は「This is pen.」という文字列を紙テープ上に開けたものである。2進数で左から順に11010100、11101000、01101001、11110011、10100000、01101001、11110011、10100000、11110000、01100101、11101110、00101110と並んでおり、一番上の偶数パリティビットを除けば16進数で54、68、69、73、20、69、73、20、70、65、6E、2Eと並んでいることがわかる。ところが、この紙テープ上に記されているデータはこれだけではない。紙テープという媒体(25.4mm幅のテープに最初から繰り出し孔が開けられている)の性質上、上記のデータの前後に16進数で00がずらっと並んでいるように見えるのである。すなわち、この紙テープをテープリーダーで読み込ませると、データの前後に00が読み込まれてしまうことになるのである。そこで、ASCIIでは00を無視してよい制御文字NULと定義しているのである。これによって、紙テープ上にいくらNULがあったとしても、データとしては「This is pen.」の部分だけが有効となるので、特に問題にはならないわけである。

            ○ ○   ○ ○   ○ ○ ○ ○ ○ ○ ○ ○ ○ ○
            ○ ○ ○ ○   ○ ○   ○ ○ ○ ○ ○   ○ ○ ○
              ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○
            ○     ○     ○   ○ ○ ○ ○     ○
              ○ ○     ○     ○ ○ ○ ○         ○ ○
    ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・
            ○               ○ ○ ○ ○       ○ ○ ○
                  ○     ○   ○ ○ ○ ○         ○ ○
                ○ ○   ○ ○   ○ ○ ○ ○ ○     ○
            T h i s  i s          a  p e n .

    図3.紙テープ上の「This is a pen.」

    次に、図2の紙テープ上の「This is pen.」というデータを「This is a pen.」に書き換えることを考えてみよう。図3が書き換えた結果である。すなわち、元の紙テープの「pen.」の部分の孔を全て開けてしまって、その後に「a pen.」というデータを追加したわけである。孔を全て開けた部分には、実際には16進数で7Fが並んでいることになる。ここで、図3の紙テープが「This is a pen.」というデータだとみなされるためには、孔を全て開けた文字、すなわち7Fを、NULと同様に無視してよいことにしなければならない。そこで、ASCIIでは7Fも無視してよい制御文字DELと定義しているのである。

    NULとDELの両方を無視してよい制御文字としている理由は、実は他にもある。紙テープのように各ビットの0→1の操作が不可逆である媒体においては、データは最初全てNULで埋まっていて、誤ったデータの削除にはDELが用いられる。ところが、もし1→0の操作が不可逆であるような媒体があったなら、そのような媒体においてはデータは最初全てDELで埋まっていて、誤ったデータの削除にはNULが用いられるだろう。そこまでを考慮した上で、ASCIIではNULとDELの両方を無視してよい制御文字としているのである。

  • EMEnd of Medium(媒体終端)

    紙テープなどの媒体の終端を表すための制御文字である。EMを用いることで、テープリーダーなどのデバイスに媒体の終わりを知らせることができ、テープの交換要求などが出せることになるのである。なお、EMは本当の媒体の終端に入っている必要はなく、実際、紙テープにおいてはEMの後にNULが続くのはやむを得ない。

  • SOHとSTXとETXとEOTStart of Heading(ヘッダ開始)、Start of Text(テキスト開始)、End of Text(テキスト終了)、End of Transmission(伝送終了)

    伝送路上の通信を制御するための制御文字である。SOHは通信の開始を意味し、EOTは通信の終了を意味する。通信中には1つあるいはそれ以上のテキストが含まれており、各テキストの最初にはSTXを、最後にはETXを用いる。通信中のテキスト以外の部分にはテキストに付帯するデータを送ることが可能になっており、特にSOHから最初のSTXまでの間のデータはヘッディング、最後のETXからEOTまでの間のデータはトレーラーと呼ばれる。

  • ETBEnd of Transmission Block(ブロック転送終了)

    伝送路の都合で、1つの通信を複数に分割しなければならなくなった場合に、各分割の末尾を表す制御文字である。

  • ACKとNAKAcknowledgement(肯定応答)、Negative Acknowledgement(否定応答)

    送られてきた通信データに対し、正しく受け取ることができたかどうかを答えるための制御文字である。正しく受け取れた場合はACKを、どうも正しく受け取れなかった場合にはNAKを答えることになっている。

  • ENQEnquiry(問い合わせ)

    伝送路が接続されたときに、最初に送る「あんた誰?」を表すための制御文字である。

  • SYNSynchronous Idle(同期信号)

    伝送路がシリアル伝送路であるときに、伝送信号を同期させるための制御文字である。0010110というビットパターンを持つことから、ストップビット数やパリティの有無にかかわらず、正しく同期が取れるようになっている。

  • CANCancel(キャンセル)

    それまでに送ったデータをキャンセルするための制御文字である。どこまで遡ってキャンセルするかは、通信の当事者同士で事前に決めておかなければいけない。

  • SUBSubstitute Character(置換)

    送られてきた文字に誤りがあることが発見された場合、その文字の代わりにメモリなどを埋めておくための制御文字である。実際にはテープリーダーがパリティエラーを発見した際などに、エラーのあった文字の代わりにSUBを送る、というような使われ方をしたようである。

  • FSとGSとRSとUSFile Separator(ファイルセパレータ)、Group Separator(グループセパレータ)、Record Separator(レコードセパレータ)、Unit Separator(ユニットセパレータ)

    ASCIIでは、単語の集まりがユニットであり、ユニットの集まりがレコードであり、レコードの集まりがグループであり、グループの集まりがファイルであり、ファイルの集まりがテキストである、という情報階層が想定されていた。この階層において、FSはファイルの区切りを表す制御文字であり、GSはグループの区切りを表す制御文字であり、RSはレコードの区切りを表す制御文字であり、USはユニットの区切りを表す制御文字であり、SPは単語の区切りを表す制御文字である。なお、これらの制御文字は1C〜20に連続して配置されている。

  • DC1〜DC4Device Control 1(装置制御1、XON)、Device Control 2(装置制御2)、Device Control 3(装置制御3、XOFF)、Device Control 4(装置制御4)

    補助装置の起動・停止を行うための制御文字である。DC1とDC2は補助装置の起動を、DC3とDC4は補助装置の停止を行うものとされていたが、詳細は通信の当事者同士で事前に決めておかなければいけない。

  • ESCとDLEEscape(エスケープ)、Data Link Escape(データリンク拡張)

    ESCは制御機能の追加に用いる制御文字である。ESCに続く何文字かで、新たな制御機能を表すことになっている。DLEは、ESCと同じだが、主に伝送機能の追加に用いることになっていた。ただし、ESCの実際の使用方法は、ISO 2022の登場によって細かく規定されてしまった。