我一直在 Windows 中使用“unicode 字符串”……我已经了解了 Unicode(例如毕业后)。然而,Win32API 非常松散地提到“unicode”总是让我感到困惑。特别是,MSN 提到的“unicode”变体是 UTF-16(尽管“宽字符”术语来源于它曾经是 UCS-2,而不是 Unicode)。但是,它几乎没有提到 Unicode 规范化。
MSN 有几页关于Unicode和Unicode 规范化形式以及更改规范化形式的功能。规范化页面甚至说:
Win32 和 .NET Framework 支持所有四种规范化形式。
但是,我在文档中的任何地方都没有找到 Win32 API 使用(或理解)什么规范化形式。
问题1:默认情况下用户输入(例如Edit控件)和转换使用什么规范化形式MultiByteToWideChar()
?
问题 2:传递给 Win32API 函数的字符串必须采用特定的规范化形式,还是内核和文件系统规范化不可知?