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'を数えるだけで全体のバイト数がわかる
- ASCII互換
- つまりはASCII系の (英語とか) はいつの間にかUTF-8に置き換えられても無問題
- むしろASCIIは移行しても全体のデータ量が変わらない*3
とかゆー理由なんじゃないかなと。