文字コード ~ 文字集合 と 符号化方式 ~
今回は文字コードについて。文字集合と符号化方式に掘り下げて勉強してみました。
1. 文字コードとは
文字コードはコンピューター上で文字を扱うために、文字にや記号に割り当てられてた数値のこと。
この文字コードは「文字集合」と「符号化方式」というもので構成されている。
1.1. 文字集合
コンピューターではどのような文字を使うのか決めておく必要がある。この扱いたい文字をまとめた集合を文字集合と呼ぶ。
ASCIIやJIS、UNICODEは文字集合です。
コンピューターで文字を表すために、文字集合の文字一つ一つにユニークな番号がふってあります。このユニークな番号のことを、コードポイントと呼ぶ。
1.2. 符号化方式
文字集合をデジタルデータとして表現するために、どうやって符号化するかを決めているのが符号化方式。
符号化することによって、文字集合のコードポイント*1を実際にコンピューターが理解できるデータ列(バイト列)に変換されます。
Shift-JISやUTF-8、UTF-16などが符号化方式です。
2. 文字集合と符号化方式
文字集合と符号化方式の関係をUNICODEとUTF-8、UTF-16で説明してみます。
UNICODE
アルファベットや記号、数字、漢字、ひらがな、アラビア文字、ラテン文字など世界中の文字を集めた文字集合。
UTF-8, UTF-16
UNICODEで定義されている文字をコンピューターが理解できるバイト列に符号化するための符号化方式。
ひらがなの「あ」を、UNICODEのUTF-8とUTF-16で表現すると下記のようになります。
符号化方式 | 文字 | UNICODEの コードポイント |
符号化 | ||
---|---|---|---|---|---|
UTF-8 | あ | ⇒ | U+3042 | ⇒ | 0xE3 0x81 0x82 |
UTF-16 | 0x30 0x42 |
UTF-8もUTF-16もUNICODEという文字集合の符号化方式であるため、文字「あ」のコードポイントは同じです。
異なるのは、コンピューターが理解できるように符号化したあとのバイト列です。
UTF-8は「0xE3 0x81 0x82」の3byteのバイト列に対し、UTF-16は「0x30 0x42」の2byteのバイト列となっています。
3. ASCII
ASCII(アスキーコード)は、「文字集合のコードポイント」と、「符号化したあとのバイト列(コンピューターが理解できるバイト列)」が同じであるため、符号化方式を意識する必要がないとのこと。*2
4. まとめ
文字コードを掘り下げて、文字集合と符号化方式についてまとめてみました。
文字コードの世界はまだまだ奥深いけど今日はここまで。
参考
文字集合 :
https://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E9%9B%86%E5%90%88
文字符号化方式 :
https://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E7%AC%A6%E5%8F%B7%E5%8C%96%E6%96%B9%E5%BC%8F
文字コードUTF-8とは〜世界で最もポピュラーな文字コードとその仕組みを学ぼう :
https://ferret-plus.com/7006