ごく最近調べて実装したり、人に聞いたメモなので間違っていたらぜひ御指摘を。 UTF-8 ascii が 1byte で ascii に一致する。 これが大きい。 処理系が実装されている C のコードで、絶対に ascii だと分かっている変数にたいして、標準C関数を使いまくれるのがうれしい。 文字列リテラルも可搬性を維持したまま使える。 strcmp("hige-func", hoge) これが UTF-32 だったら、たとえ全てが ascii と分かっていても専用の関数(ブリッジ?)を作らないと行けない。 fopen とか。 あとはasciiばかりの場合には効率が良いとか。 UTF-16 2byteに収まる。 サロゲートペアの部分なんか気にしないぜと男気を見せれば、完全2byteの世界になること。 UTF-32 完全 4byte 固定なので処理がとても楽。*1 L"abあ" は、何文字?