宽字符到多字节问题
Posted
技术标签:
【中文标题】宽字符到多字节问题【英文标题】: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 没有返回字节数组吗?如果是这种情况,那么它可能会以某种方式与二进制移位运算符(也是 ' 混淆 【参考方案1】:默认情况下,WideCharToMultiByte 将接受一个 char 指针并返回转换后的多字节数组。
他还提到可以在除 XP 之外的所有操作系统上工作,其中语言注册表已更改。所以我不认为这个问题是因为二进制移位运算符。
【讨论】:
以上是关于宽字符到多字节问题的主要内容,如果未能解决你的问题,请参考以下文章