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)」という方法で表現することも出来る。

Unicode⇔ 文字列変換機

作った

参考

Unicode とは? その歴史と進化、開発者向け基礎知識 - Build Insider