C ++处理英文Windows中的西里尔字符串

时间:2016-07-21 14:56:11

标签: c++ visual-studio encoding windows-server-2012-r2

我编写了连接到Windows Server 2012上的Active Directory的应用程序。首先,应用程序从AD检索组织单位名称。然后,它从每个组织单元获取用户,处理它们并将信息发送到另一个Web应用程序。

AD的组织单位和用户可以使用英语和俄语的名称。

因此,当我在Windows中使用俄语系统语言运行我的应用程序时,一切都很好。

但是当我尝试在Windows Server(或带有英语系统语言的Windows 7)上运行它时,我得到了"""在:

中代替俄语字符串
  1. 日志文件
  2. 控制台输出
  3. Active Directory搜索字符串,其中包含“组织单位”的名称
  4. 在应用程序内部,我尝试使用std::stringstd::wstring来保存从Active Directory数据中提取的内容并得到相同的结果 - "?"而不是俄语单词。

    在开发人员支架上使用MSVS 2013,Windows 8.1。和libLDAP(设置版本3)连接到Active Directory。

    我需要做些什么才能使我的应用程序正确处理俄语字符串?

1 个答案:

答案 0 :(得分:0)

刚刚找到解决方案。
我使用函数MultiByteToWideCharWideCharToMultiBytestd::stringstd::wstring之间进行转换,始终以CP_ACP作为第一个参数。当我把它改为CP_UTF8时,一切都很顺利。

顺便说一句,我还将所有项目文件的编码更改为没有BOM的UTF-8。

@IInspectable,谢谢你的帮助