私はUnicodeに関するSOに関するいくつかの質問を読んでいましたが、次のように、完全には理解していないコメントがいくつかありました。
Dean Harding:UTF-8は可変長エンコーディングであり、固定長エンコーディングよりも処理が複雑です。また、Gumboの回答に関する私のコメントも参照してください。基本的に、結合文字はすべてのエンコーディング(UTF-8、UTF-16、およびUTF-32)に存在し、特別な処理が必要です。文字の結合に使用するのと同じ特別な処理を使用して、UTF-16のサロゲートペアも処理できるため、ほとんどの場合、サロゲートを無視して、UTF-16を固定エンコーディングのように扱うことができます。
私は最後の部分(「ほとんどの部分」)で少し混乱しました。UTF-16が固定16ビットエンコーディングとして扱われる場合、これによりどのような問題が発生する可能性がありますか?BMPの外にキャラクターがいる可能性は何ですか?ある場合、2バイト文字を想定した場合、これによりどのような問題が発生する可能性がありますか?
サロゲートに関するウィキペディアの情報を読みましたが、それは私にとって物事を明確にするものではありませんでした!
編集:私が本当に意味しているのは、「偽物のように見えるのに、なぜUTF-16を固定エンコーディングとして扱うことを提案するのでしょうか?」ということだと思います。
Edit2:
「 UTF-8よりもUTF-16を好む理由はありますか? 」で別のコメントを見つけました。これは、これをもう少しよく説明していると思います。
Andrew Russell:パフォーマンスについて:UTF-8はUTF-16よりもデコードがはるかに困難です。UTF-16では、文字は基本多言語面文字(2バイト)または代理ペア(4バイト)のいずれかです。UTF-8文字は、1〜4バイトの範囲で指定できます
これは、UTF-16には3バイトの文字がないため、16ビットを想定することで、1バイトをオフにして「完全に失敗」することはないということを示しています。しかし、これがUTF-8がシングルバイト文字であると仮定することと何ら違うとはまだ確信していません!