からあげの備忘録

ダメ社会人。継続は力。

基礎知識:文字コード

文字コード」と聞いたときに、Unicode, UTF-8, UTF-16, Shift-JIS, ASCII等色々な言葉が思い浮かんでいたのですが(そもそも、この時点で混同していた)
そもそも具体的に勉強したこともなく、何となくで来てしまったので勉強し直しました。

文字コードとは?

文字集合を定義し、その集合の各文字に対応する数値を一意に定めたもの]が文字コードです。
今回勉強してみて分かったのですが、そもそも「文字コード」という1つの概念でコンピュータでの文字について理解しようというのが間違っていました。

符号化文字集合文字符号化方式

文字コードには下記の2つの要素があり、これをしっかりと意識しておかないと、私のように後々混乱してしまうことになる。
①符号化文字集合
②符号化方式

符号化文字集合とは

符号文字集合を定め、かつその集合内の文字とビット組合せとを1対1に関係付けるあいまいでない規則の集合

文字符号化方式とは

符号化文字集合で文字に対応付けた非負整数値を、実際にコンピュータが利用できるデータ列(通常、バイト列)に変換する符号化方式。

上記の定義では中々頭に入って来にくいので下記のようなイメージをしてみるとわかりやすい
あ:U1
い:U2
う:U3
え:U4
お:U5
「あ」「い」「う」「え」「お」の各文字に一意のコードを割り当てた:これが符号化文字集合の考え方
そして、さらにこの集合を2種類の方式で符号化してみる。

符号化方式A
あ:U1:0x01
い:U2:0x02
う:U3:0x03
え:U4:0x04
お:U5:0x05

符号化方式B
あ:U1:0x01 0x10
い:U2:0x02 0x20
う:U3:0x03 0x30
え:U4:0x04 0x40
お:U5:0x05 0x50

文字集合と符号化方式がごっちゃになっていた

ちゃんと勉強する前は、Unicode, UTF-8, UTF-16が全て一緒くたになっていて混同していました。
Unicode文字集合を意味しており、その文字集合をどのようなバイト列で表すかを決めているのが
符号化方式であるUTF-8, UTF-16等ということがわかりました。

符号化方式の例

EUC-JP(JIS系の文字集合に対して)
Shift-JIS(JIS系の文字集合に対して)
UTF-8Unicodeに対して)
UTF-16Unicodeに対して)

参考サイト

blog.shibayu36.org
qiita.com