在我的一个项目中,我需要在Windows C ++中支持UTF-8。
当前代码正在使用wcstombs
,其中中文语言未正确转换。我将wcstombs
替换为WideCharToMultiByte
。经过测试,这在Windows 7和Windows XP SP3中运行良好。
但在其中一台旧机器上安装了Windows XP SP3中文或CZech语言包。我知道这也会影响注册表。应用程序的行为方式不同。
当我在wcstombs
的操作符重载时使用<<
它的工作正常。当我使用WideCharToMultiByte
时它不能按预期工作。
如果没有更改注册表设置(安装语言包),WideCharToMultiByte
工作正常。
我认为语言包安装会影响影响此行为的注册表更改吗?请帮助我理解是否还有其他可能影响行为的事情。
答案 0 :(得分:0)
默认情况下,WideCharToMultiByte将接受char指针并返回相关的多字节数组。
他还提到在除XP之外的所有操作系统上工作,其中语言注册表已更改。所以我不认为问题是因为二元shif运算符。