英数字や記号を7ビットの数値で表す最も基本的な文字コード
ASCII(アスキー)=American Standard Code for Information Interchange の略で、英数字や記号といった文字を「数値(コード)」に対応づける決まりです。コンピュータは内部ですべてを0と1の数値で扱うため、文字をそのまま記憶することはできません。そこで「A は 65 番」「a は 97 番」のように、文字に背番号を割り当てた一覧表がASCIIです。
身近な例で言うと、図書館の本に付いている請求記号に似ています。本(文字)そのものは長くて扱いづらいので、棚の場所を表す短い番号(コード)で管理する──ASCIIも文字を番号で扱う仕組みです。世界共通の番号を使うことで、ある人が作った文章を別のコンピュータでも同じように読めます。
上のツールで文字を入力すると、その文字のASCIIコードが10進・2進・16進の3通りで表示されます。コード表のマスをクリックすれば、逆に「この番号はどの文字か」も確かめられます。
ASCIIは7ビット(=0か1が7個)で1文字を表します。ビットが7個あると組み合わせは 27 = 128 通りになるため、0番から127番までの128文字を表現できます。これがASCIIで扱える文字の総数です。
128文字の内訳は大きく次のように分かれています。
・0〜31番・127番(制御文字):改行(LF)やタブ(HT)など、画面に文字としては表示されない制御用のコード
・32番(空白)〜126番:実際に目に見える文字。記号・数字・英大文字・英小文字
・数字 0〜9 は 48〜57番、大文字 A〜Z は 65〜90番、小文字 a〜z は 97〜122番と連続して並ぶ
覚えておくと便利なのが「大文字と小文字のコードは32だけ違う」という性質です。A=65 に対して a=97(=65+32)。だから大文字を小文字に変えるには「コードに32を足す」だけで済みます。文字は連番なので、'5' のコード = '0'のコード + 5 のように計算で求められる点も特徴です。
標準のASCIIは7ビットですが、コンピュータが1文字を扱う単位は 1バイト=8ビットです。つまり1ビット余ります。この余った8ビット目(128〜255番)を使って文字を増やしたものを拡張ASCII(8ビットASCII)と呼びます。
| 標準ASCII | 拡張ASCII | |
|---|---|---|
| ビット数 | 7ビット | 8ビット |
| 文字数 | 128文字 | 256文字 |
| 追加分 | — | アクセント付き文字・罫線・記号など |
拡張ASCIIの最大の問題は「追加した128文字の中身が国や規格ごとにバラバラ」という点です。同じ200番でも、ある規格では「é」、別の規格では「┐(罫線)」を表すなど統一されていません。これが文字化けの原因になります。
さらに、ASCIIや拡張ASCIIでは日本語(ひらがな・漢字)は表せません。256文字では数千〜数万ある漢字を収めきれないからです。そこで日本語用にShift_JISやEUC、世界中の文字を1つにまとめたUnicode(UTF-8など)が登場しました。ASCIIはそれらすべての土台であり、UTF-8では0〜127番がASCIIとまったく同じになっています。