文字コードについて調べたので備忘録。
文字コードとは
コンピューター上で文字を利用するうえで、各文字に割り当てられたバイト数との対応関係のこと。
つまり、コンピュータは「a, あ, 日」などの文字をそのまま認識・処理することができないので、コンピュータが扱えるように文字をコード化したもの。色んな種類があり、例えば、「A」の文字コードは「65」や「0x41」になる。
文字を文字コード化することを文字エンコーディングという。逆に、文字コードを文字化するのは、文字デコーディング。
有名な文字コード
ASCII(アスキー)
1960年代に定められた、歴史の古い文字コード。
元々は7桁の2進数を使って文字との対応関係を表していたが、後に8桁まで増えた。
ただ、8桁の2進数では最大でも約250種類までしか対応できなかったので、漢字やハングルなどを表すには不十分で、アルファベット、数字、記号しか表せなかった。
Unicode
現在主流の文字コード。約111万ほどの文字・記号に対応可能で、現在は約13万個が割り当て済。
漢字やひらがな等の日本語や韓国語も表現でき、ASCIIとの互換性もあるためよく利用されている(古いプログラムはASCIIが使用されていることもあるため)。
1文字に使用するバイト数に応じて、UTF-8、UTF-16などの形式がある。
Unicodeの形式例
- UTF-8:1文字あたり、1~4バイト(8ビット~32ビット)
- UTF-16:1文字あたり、2バイト(16ビット) または 4バイト(32ビット)
- UTF-32:1文字あたり、4バイト(32ビット)
※1バイト=8ビット
ちなみに、JavaScriptやJavaなどはUTF-16を使っていて、データベースやwwwはUTF-8が多いそう。