chikuchikugonzalezの雑記帳

趣味とか日記とかメモとか(∩゚д゚)

Unicodeの符号化方式

UTF-16 < UCS-2だと思っていたらUTF-16 > UCS-2だった。
いや、某所で「Unicodeだと全角文字が3バイト」の発言を見て、『それはUTF-8を使ってUnicodeを符号化したときの話だ』と突っ込みたかっただけです。

符号化方式 バイト数とか
UTF-8 1〜4バイト*1。ASCII互換
UTF-16 2バイト*2
UTF-32 4バイト
UCS-2 2バイト。基本多言語面 (BMP) だけらしいのでUTF-16よりも文字数が少ないようです
UCS-4 4バイト。ほぼUTF-32らしいです。Solarisで採用されているとか

UTF-8が広く使われているのはたぶん、

  1. 先頭バイトの頭にある'1'を数えるだけで全体のバイト数がわかる
  2. ASCII互換
    1. つまりはASCII系の (英語とか) はいつの間にかUTF-8に置き換えられても無問題
  3. むしろASCIIは移行しても全体のデータ量が変わらない*3

とかゆー理由なんじゃないかなと。

*1:ISO-10646の方は最大6バイト

*2:サロゲートペアで4バイトになることもある

*3:日本語はSJISから移行すると3/2倍