【发布时间】:2010-11-24 12:26:53
【问题描述】:
我有一个用 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 调用。
还有其他方法可以进行这种转换吗?或者我可能只是不正确理解这些语言环境设置?谢谢。
附:对于语法错误,我深表歉意。
【问题讨论】: