【发布时间】:2014-10-31 07:05:35
【问题描述】:
在我的一个项目中,我需要在 Windows C++ 中支持 UTF-8。
当前代码使用wcstombs,其中中文无法正确转换。我用WideCharToMultiByte 替换了wcstombs。经过测试,这在 Windows 7 和 Windows XP SP3 中运行良好。
但是在一台旧机器上安装了带有中文或捷克语语言包的 Windows XP SP3。我知道这也会影响注册表。应用程序的行为有所不同。
当我在操作员重载<< 时使用wcstombs 时,它工作正常。当我同时使用WideCharToMultiByte 时,它无法按预期工作。
不更改注册表设置(安装语言包),WideCharToMultiByte 工作正常。
我认为语言包安装会影响影响此行为的注册表更改是否正确?请帮助我了解是否还有其他可能影响行为的因素。
【问题讨论】:
-
您确定 WideCharToMultiByte 没有返回字节数组吗?如果是这种情况,那么它可能会以某种方式与二进制移位运算符(也是 ' 混淆