(アスキー、)は、1963年に制定された、アメリカ合衆国における情報通信用の文字コードである。日本語訳は「情報交換用米国標準コード」となるが、一般には日本国内でもASCIIと表記する。なおInternet Assigned Numbers Authority (IANA) はこれをASCIIではなくUS-ASCIIと表記するのが望ましいとしている。

概要 1963年6月17日に、米国規格協会(American Standards Association: ASA、後のANSI)によって制定された。当時の規格番号は「ASA X3.4」であったが、情報技術規格国際委員会 (INCITS) の発足に伴い規格番号が2002年に改訂され、現在の規格番号は「ANSI INCITS 4」である。

0番から127番までの番号(数値)がどの文字や記号を意味するかという対応関係を定めているASCII(アスキー / US-ASCII)とは - 意味をわかりやすく - IT用語辞典 e-Words。

ASCIIは、あくまで1960年代のアメリカにおいて英語での通信や当時のアメリカのコンピュータに必要な文字や記号などが含まれるように定めた文字コードである。そのため、含まれているのは次のような文字や記号や制御文字だけであり、それ以外は含まれていない。 《英語で使われるアルファベット》の大文字と小文字 英文でよく使われる約物など 0から9までの数字(アラビア数字) 制御文字(ASCIIに含まれた制御文字については#ASCII制御文字の節で説明する)

これらの文字や記号をすべて通し番号で表現できるように、7ビットを使っている。つまり2進数で7桁、具体的には0000000から1111111まで、10進数でいえば0番から127番までの番号を使い、それぞれの数値(番号)に対応する文字や約物や数字や制御文字を決め、その対応の規則(コード)を制定したものである。

ASCIIの構成は次のようになっている: コード範囲(16進)内容00–1F制御文字20空白21–7E図形文字7F 制御文字()

派生規格 ASCIIはISO標準7ビット文字コードISO/IEC 646の元となった。しかし7ビットでは英語以外の言語に対応するには不十分であり、後に他のヨーロッパ言語で使われるラテン文字への対応を追加した8ビット文字コードであるISO/IEC 8859が策定された。その後、世界中で使用されている様々な文字を表現できるようにするため、ASCIIで使用されていない128番以降の部分に、その他の文字を割り当てたり、複数バイトを使用して1つの文字を表現したりするように独自拡張した文字符号化方式が使われるようになっていった。

ASCII制定当時、最小のデータ処理単位(メモリアドレッシングの最小単位)つまりバイトが6ビットであるコンピュータも多かった(DECのPDPシリーズなど)。そのようなコンピュータでは6ビットの文字符号化方式を採用しており、そのためISO/IEC 646の策定にあたっては、7ビット符号化案の他に6ビット符号化案もあった。のちに1バイトを8ビットとみなす、つまりオクテットを採用するコンピュータが人気となり、主流となっていった「オクテット」と「バイト」は何が違う? | 日経クロステック(xTECH)。オクテットを採用したコンピュータでASCIIを扱う場合、1ビットの余りがあるので、その8ビット目は通信におけるエラーチェック用のパリティビットとして用いられていた。21世紀初頭においても、互換性を維持する目的で、7ビットコードが正式で、8ビット目は使用できない規格がいくつか存在する。

ASCIIから派生した独自拡張の文字符号化方式は1バイトコードおよび複数バイトコードを含め多数存在するが、各方式の間に互換性はほとんどなく、国際的なデータ交換性に問題があった。また、異なる言語間に限らず、例えば日本語の文字セットであっても複数の符号化方式が存在し、異なるコンピュータ間で互換性および可搬性のない機種依存文字が発生することになった。そのため、世界の文字を単一のコード体系のもとに収録する国際的な文字コード標準として、ISO/IEC 10646およびUnicodeの策定が進められることになったUnicode(ユニコード)とは - 意味をわかりやすく - IT用語辞典 e-Words。Unicode方式で符号化された文字データのうち、0番から127番まではASCIIをベースにしており、互換性がある。特に8ビット単位で符号化するUTF-8は、128番以降の文字を使用しないデータの場合はASCIIと同一のバイト列となるUTF-8とは - 意味をわかりやすく - IT用語辞典 e-Words。従来の文字符号化方式では1バイトや2バイトで表現可能だった文字が、UTF-8では2バイトや3バイト以上必要となってしまうケースもあるが、そのデメリットを補ってなお余りある交換性の高さから国際的にもUTF-8の普及が進んでいるWebサイトの文字コーディング、90%がUTF-8利用 - Shift JISは0.9% | TECH+(テックプラス)。これは従来の文字符号化方式が開発された当時と比べると、コンピュータのメモリやストレージの容量が飛躍的に増大しているためでもある。HTML5ではUTF-8の使用が推奨されておりHTMLで文字エンコーディングを指定する、後継のでもデフォルトでUTF-8が使用されることを想定しているHTML Standard - §4.2.5.4 Specifying the document's character encoding。

ASCII制御文字

初めの32文字(10進数で0–31)はでは制御文字として予約されている。基本的にはこれらの制御文字は表示するための文字ではなく、モニタやプリンタなどの機器を制御するために用いられる。例えば、 10(10進)は (改行)を表しプリンタの紙送りなどに用いる、 27 はエスケープを表す。

127(全てのビットがオン、つまり、2進数で1111111)は、(削除文字)として知られる制御文字である。この記号が現れた場合、その部分のデータが消去されていることを示す。この制御文字だけ先頭部分になく最後にある理由は、パンチテープへの記録は上書きが出来ないため、削除する際には全てに穴を空けることで対応できるというところからきている(1111111は全てに穴の開いた状態を示す)。また、 0(全てのビットがオフ、つまり2進数で0000000)は あるいはヌル文字と呼ばれ、 と同様に多くのコンピュータシステムでは無視される。これは、仮にパンチテープと反対に1を0に変えることでデータを記録し、かつ上書きが不可能な媒体が存在する場合でも対応できるようにしているのである。

コードのうちの10個は、ベーシック手順で用いられる。(例:ヘッディング開始、テキスト開始、テキスト終了など)

セパレータは磁気テープへの保存のために設計された。

や は、プリンタのような処理の遅いデバイスにおいて、データを失うことがないように情報の流れを制御するために用いることがある。

2進8進10進16進略語図形表現CSエスケープシーケンス名前/意味000 0000000000NUL^@\0ヌル文字000 0001001101SOH^Aヘッディング開始000 0010002202STX^Bテキスト開始000 0011003303ETX^Cテキスト終了000 0100004404EOT^D伝送終了000 0101005505ENQ^E問い合わせ000 0110006606ACK^F肯定応答000 0111007707BEL^G\aベル000 1000010808BS^H\b後退000 1001011909HT^I\t水平タブ000 1010012100ALF^J\n改行000 1011013110BVT^K\v垂直タブ000 1100014120CFF^L\f書式送り000 1101015130DCR^M\r復帰000 1110016140ESO^Nシフトアウト000 1111017150FSI^Oシフトイン001 00000201610DLE^P伝送制御拡張001 00010211711DC1^Q装置制御1、XON001 00100221812DC2^R装置制御2001 00110231913DC3^S装置制御3、XOFF001 01000242014DC4^T装置制御4001 01010252115NAK^U否定応答001 01100262216SYN^V同期信号001 01110272317ETB^W伝送ブロック終結001 10000302418CAN^X取消001 10010312519EM^Y媒体終端001 1010032261ASUB^Z置換001 1011033271BESC^[\eエスケープ001 1100034281CFS^\ファイル分離標識001 1101035291DGS^]グループ分離標識001 1110036301ERS^^レコード分離標識001 1111037311FUS^_ユニット分離標識111 11111771277FDEL^?抹消

ASCII印字可能文字 ASCII 32は、空白文字である。キーボードのスペースキーから入力でき、語と語の間に空白を表示する。 ASCII 33–126は印刷可能な文字 (printable characters) であり、半角英数の数字、句読点や記号を表す。若い順からエクスクラメーションマーク、ダブルクオーテーション、…と続き、ラテン文字(英語アルファベットの26文字)大文字の前に数字と大半の半角約物、大文字と小文字の間、ラテン文字小文字の後にも数種類の半角約物が割り当てられている。

下の図では、16進数・10進数・8進数の順でASCIIコードの値を示す。

大文字のASCII値に32を加えると小文字に変換することができる。この変換は、2進法では、6ビット目に1をセットするだけでよい。また、数字から48を減じれば、対応する値が得られる。この変換は、5ビット目及び6ビット目に0をセットするか、あるいは単純に上位4ビットを無視するだけでもよい。なお、印字可能文字のうち「@」から始まる32文字については、ASCII値を64減じて対応する制御文字を求め、この制御文字を「コントロール+」()という前置表現を付けた印字可能文字で表記する慣習がある。

この制御文字の表記方法は、キーボード上の印字可能文字キーを制御文字の送出に用いていた機器の名残りであると考えられる(7ビット目を0にセットする専用キー(Ctrlキー)を、印字可能文字キーと同時に押して制御文字を送出)。

が ^@ が ^[ が ^\ が ^] が ^^ が ^_ が ^?

欠点など 上述されているようにASCIIは米国の規格であり、ラテン文字を用いる言語であってもアメリカ英語以外を表記するには不十分である。

当初サーカムフレックス、チルダ、グレイヴ・アクセントおよび(本来の目的と兼用で)アポストロフィー、コーテーションマーク、コンマは他の文字に追加するダイアクリティカルマークとして電動タイプライターで重ね打ちすることを想定していたが"Character histories: notes on some ASCII code positions"、間にバックスペースを入力しなければならず、ビデオ表示端末では重ね打ちが事実上不可能であるなどの理由で普及しなかった。

早期に互換性のない変種が各国で出現したため、ISO/IEC 646では置き換え可能な文字を定義することで対応を図ったが、置き換えられた文字を利用するプログラム言語や異なる文字集合の間では文字化けが発生することとなった。(日本語ではJIS X 0201に起因するバックスラッシュの円記号への文字化けがある。)

1970年代以降、8ビットがコンピュータで主流のバイトサイズになると、追加の1ビットの領域を利用したいわゆる拡張ASCIIが言語・機種ごとに乱立した。ISO/IEC 8859ではこれらの追加領域を標準化し、スペイン語、ポルトガル語、フランス語、ドイツ語等で用いられるラテン文字のほとんどがISO/IEC 8859-1に統合された。

ISO/IEC 2022では日本語(ISO-2022-JP)を含む複数の文字集合を符号表の切り替えによって統一したが、表の切り替えを用いた方法は制御が複雑であるなどの欠点もあり、2023年現在では全ての文字を統一された符号で扱えるUnicodeが主流となっている。

脚注

注釈

出典

参考文献 「」(1963年6月17日制定、1986年3月26日最終改正、2002年1月15日規格番号変更) - 上記の「USAS X3, 4-1968.」を転載しているRFC。但し本文のみで、Appendixは不掲載。1969年。

関連項目 JIS X 0201 - 日本でASCIIを定義する規格。但し複数の定義を内包しており、。7bit領域のみを使い、片仮名用図形文字集合(いわゆる半角カナ)を含まないのは6.1節である。 アスキーアート