宽字符到多字节的问题

时间:2014-10-31 07:05:36

标签: c++ windows utf-8

在我的一个项目中,我需要在Windows C ++中支持UTF-8。

当前代码正在使用wcstombs,其中中文语言未正确转换。我将wcstombs替换为WideCharToMultiByte。经过测试,这在Windows 7和Windows XP SP3中运行良好。

但在其中一台旧机器上安装了Windows XP SP3中文或CZech语言包。我知道这也会影响注册表。应用程序的行为方式不同。

当我在wcstombs的操作符重载时使用<<它的工作正常。当我使用WideCharToMultiByte时它不能按预期工作。

如果没有更改注册表设置(安装语言包),WideCharToMultiByte工作正常。

我认为语言包安装会影响影响此行为的注册表更改吗?请帮助我理解是否还有其他可能影响行为的事情。

1 个答案:

答案 0 :(得分:0)

默认情况下,WideCharToMultiByte将接受char指针并返回相关的多字节数组。

他还提到在除XP之外的所有操作系统上工作,其中语言注册表已更改。所以我不认为问题是因为二元shif运算符。