wchar_t
Windows stdlibでの実装はUTF-16に依存しません。これは、約16ビットのコードユニットしか認識していません。
したがって、UTF-16サロゲートシーケンスを文字列に入れることができ、より高いレベルの処理を使用してそれを単一の文字として扱うことを選択できます。文字列の実装は、あなたを助けたり、邪魔したりすることは何もしません。これにより、UTF-16として解釈されたときに無効になるコード単位のシーケンスを文字列に含めることができます。
Windowsの高レベルの機能の多くは、UTF-16サロゲートで作成された文字をサポートしています。そのため、ファイル.txt
を呼び出して、正しくレンダリングされ、正しく編集されることを確認できます(2回ではなく1回キーを押すだけで、文字)複雑なテキストレイアウトをサポートするExplorerなどのプログラム(通常はWindowsのUniscribeライブラリを使用)。
ただし、UTF-16の忘却が透けて見える場所はまだあります。たとえば.txt
、と同じフォルダに呼び出されたファイルを作成できるという事実.txt
、大文字と小文字を区別しないと許可されないという事実、または作成できるという事実などです。[U+DC01][U+D801].txt
プログラムで。
これは、WindowsがUTF-16文字列を「サポート」するのかUCS-2のみをサポートするのかについて、衒学者が長くて基本的に無意味な議論をする方法です。