2017-9-18
Unicode、及びUTFに関してのメモ
Unicode は文字集合、UTF は符号化方式
- 文字集合:「この文字をコンピュータで扱えるようにしてぇな〜」って文字の集合
- 符号化方式:文字集合を具体的にどういうルールで表現するかの方法
Unicode と UTF の歴史ざっくり
- まず ASCII コードが作られる
- 当然 ASCII コードの文字だけじゃ全然足りないので、各国独自の文字コードを作り出す
- 別言語間でのデータのやり取り等に不都合が出て来る
- 世界共通の文字コードが求められる
- Unicode という名前で世界共通の文字集合が作られる
- UTF-16 が作られる。当時は Unicode は 2Byte に収まっていたので UTF-16 も 2 バイト固定で、Unicode のコードポイントがそのまま文字コードのバイト列となっていた。
- UTF-16 の欠点として、ASCII との完全な互換性が無い(ASCII は1バイトだが、UTF-16 は ASCII コードを表現するのに2バイト使用するため)
- そのため、可変長コードとして UTF-8 が作られた
- この時点では UTF-8 は可変長、UTF-16 は固定長
- 更に文字を増やすことになり、Unicode が2バイトじゃ収まらなくなる
- UTF-16 ではサロゲートペアを使用することで増えた文字に対応。結果 UTF-16 も可変長コードになった
- 新しい固定長コードとして UTF-32 が作られる
結合文字
Unicode では、組み合わせて使うと合成されて1文字になる結合文字
が存在する。
例えば「ポ」は「0x30DD」だけど、「ホ(0x30DB)」と「゚(0x309A)」を組み合わせて「ポ(0x30DB 0x309A)」という方法で表現することも出来る。