【问题标题】:Wide char to multibyte issue宽字符到多字节问题
【发布时间】: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 没有返回字节数组吗?如果是这种情况,那么它可能会以某种方式与二进制移位运算符(也是 ' 混淆

标签: c++ windows utf-8


【解决方案1】:

默认情况下,WideCharToMultiByte 将接受一个 char 指针并返回转换后的多字节数组。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多