我编写了连接到Windows Server 2012上的Active Directory的应用程序。首先,应用程序从AD检索组织单位名称。然后,它从每个组织单元获取用户,处理它们并将信息发送到另一个Web应用程序。
AD的组织单位和用户可以使用英语和俄语的名称。
因此,当我在Windows中使用俄语系统语言运行我的应用程序时,一切都很好。
但是当我尝试在Windows Server(或带有英语系统语言的Windows 7)上运行它时,我得到了"""在:
中代替俄语字符串在应用程序内部,我尝试使用std::string
和std::wstring
来保存从Active Directory数据中提取的内容并得到相同的结果 - "?"而不是俄语单词。
在开发人员支架上使用MSVS 2013,Windows 8.1。和libLDAP(设置版本3)连接到Active Directory。
我需要做些什么才能使我的应用程序正确处理俄语字符串?
答案 0 :(得分:0)
刚刚找到解决方案。
我使用函数MultiByteToWideChar
和WideCharToMultiByte
在std::string
和std::wstring
之间进行转换,始终以CP_ACP
作为第一个参数。当我把它改为CP_UTF8
时,一切都很顺利。
顺便说一句,我还将所有项目文件的编码更改为没有BOM的UTF-8。
@IInspectable,谢谢你的帮助