在Windows API中,如果调用类似的函数
int SomeFunctionA(const char*);
Run Code Online (Sandbox Code Playgroud)
然后它会自动将字符串转换为UTF-16并调用该函数的真实 Unicode版本:
int SomeFunctionW(const wchar_t*);
Run Code Online (Sandbox Code Playgroud)
问题是,它将字符串从ANSI代码页转换为UTF-16 .如果你实际上在ANSI代码页中编码了字符串,那就行了.如果您使用UTF-8编码的字符串不起作用,这些日子现在越来越常见(例如,近70%的网页),并且不支持ANSI代码页.
此外,如果您使用AAPI,您将遇到限制,例如不能(轻松)打开名称中包含非ANSI字符的文件(可以是任意UTF-16字符串).并且无法访问某些Windows的新功能.
这就是我总是称之为W功能的原因.即使这意味着令人讨厌的显式转换(来自我们软件的非Windows特定部分中使用的UTF-8字符串).
| 归档时间: |
|
| 查看次数: |
1011 次 |
| 最近记录: |