UTF-8/UTF-16/UTF-32 を処理系の内部エンコーディングに使う場合のそれぞれのメリット
ごく最近調べて実装したり、人に聞いたメモなので間違っていたらぜひ御指摘を。
UTF-8
ascii が 1byte で ascii に一致する。
これが大きい。
処理系が実装されている C のコードで、絶対に ascii だと分かっている変数にたいして、標準C関数を使いまくれるのがうれしい。
文字列リテラルも可搬性を維持したまま使える。
strcmp("hige-func", hoge)
これが UTF-32 だったら、たとえ全てが ascii と分かっていても専用の関数(ブリッジ?)を作らないと行けない。
fopen とか。
あとはasciiばかりの場合には効率が良いとか。
UTF-32
完全 4byte 固定なので処理がとても楽。*1
L"abあ" は、何文字?何バイト?というのがすぐ分かるのはとても大きい。
また仕様的にしばらくは安泰という安心感がある。
こんな感じでしょうか。
*1:UCS4は31bitですよとか、厳密には21bitですよとかの御指摘をいただきました