##文字コード
文字列は文字コードの関係で特殊なデータ型となる。
コンピュータは数字しか処理できないため、テキスト形式の文字等は数字に変換しないといけない。最初にコンピュータを設計された時に、1バイト(byte)は8ビット(bit)となり。1バイトで表示できる最大の整数は255(2進数の11111111は10進数の255)となり、もっと大きな整数を表示する為、たくさんバイトが必要となる。例えば、2バイトで表示できる最大整数は65535、4バイトは4294967295である。
コンピュータ開発は、米国を中心に進められ、最初に規格された文字コードは128個しかない。この文字コードはASCIIと言い、英語で使われる英数字、記号、スペース、改行等の対応が全部できる。例:A
の文字コードは65
、z
の文字コードは122
となる。
日本語を処理する為、1バイトは当然足りない、2バイトをしないといけない。しかし、ASCIIと同じが使え無い為、日本はJISコードを作成した。その他の国も、ASCIIを基に各国版の文字コードが作成られた。その結果は、多言語が混在されているテキストファイルに対して、化け文字が表示された。
化け文字を対策する為、Unicodeが生まれた。全ての言語を一つの文字コード(Unicode)に統一された。Unicodeはまだ改善中だが、普通に使われる文字は全部2バイトで処理している。
文字列A
のASCIIは10進数の65
、2進数の01000001
である。
文字列0
のASCIIは10進数の48
、2進数の00110000
である。
(注意:文字列の0
と数字の0
は同じではない。)
ASCIIのA
をUnicodeを表示する為、その前に0を入れば良い。A
のUnicodeの文字コードは00000000 01000001
となる。ここで、新しい問題が出てくる。Unicodeを使うと化け文字は無くなったが、全部英語のテキストデータに対して、ASCIIより倍のデータ量となる。
それを解決するため、可変長なUTF-8を作成した。UTF-8では、1文字のUnicodeの大きさによって、1バイトから6バイトに変換した。アルファベットなどは1バイト、普通の漢字は1~3バイト、あまり使わない漢字は4~6バイトもある。
E697A5 日 110010111100101 11100110 10010111 10100101
目次 非IT業種のITメモ