私は Windows で「Unicode 文字列」を長い間使用してきました... Unicode について学びました (卒業後など)。しかし、Win32API が "unicode" について大まかに言及していることに、いつも当惑していました。特に、MSN で言及されている「ユニコード」バリアントは UTF-16 です (ただし、「ワイド文字」という用語は、以前は Unicode ではない UCS-2 であったことに由来します)。ただし、Unicode の正規化についてはほとんど言及されていません。
MSN には、UnicodeおよびUnicode 正規化フォームと正規化フォームを変更する関数に関するページがいくつかあります。正規化に関するページには、次のようにも書かれています。
Win32 と .NET Framework は、4 つの正規化形式すべてをサポートしています。
ただし、Win32 API で使用される (または理解される) 正規化形式がドキュメントのどこにも見つかりませんでした。
質問 1 : ユーザー入力 (エディット コントロールなど) および を介した変換に既定で使用される正規化形式はMultiByteToWideChar()
どれですか?
質問 2 : Win32API 関数に渡される文字列は、特定の正規化形式である必要がありますか? それとも、カーネルとファイル システムが正規化に依存していませんか?