gpt4 book ai didi

c++ - Win1251->UTF16转换

转载 作者:太空狗 更新时间:2023-10-29 19:50:04 24 4
gpt4 key购买 nike

我有一个用 Windows-1251 编码编写的 dll 项目,我需要用 UTF-16 编码我的 dll 输出。我使用以下函数进行转换:

ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);

不幸的是,MultiByteToWideChar 使用系统语言环境作为源编码。因此,例如,如果我的 Windows 语言环境是英语(美国),它会转换 Win1252->UTF8,而不是我需要的 Win1251->UTF8。

我尝试手动设置语言环境,但以下代码也不起作用:

enc = setlocale(CL_ALL, "rus_rus.1251");
//this returns Windows-1251 encoding
ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);

据我了解,MultiByteToWideChar 始终使用系统区域设置,忽略我的 setlocale 调用。

还有其他方法可以进行这种转换吗?或者我可能只是不正确理解这些语言环境设置?谢谢。

附言对于语法错误,我深表歉意。

最佳答案

setlocale 是一个 CRT 函数。显然 Windows API 不关心通过它设置的内容。

您应该设置所需的代码页(在您的情况下为 1251)而不是 CP_ACP(这意味着系统默认值)。

res = MultiByteToWideChar(1251, 0, str, -1, wbuff.getBuffer(), len);

关于c++ - Win1251->UTF16转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4266738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com