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