visual studio-C++在英文Windows中处理西里尔字母字符串
visual studio - C++ Processing Cyrillic strings in English Windows
我编写了连接到Windows Server 2012上的Active Directory的应用程序。首先,应用程序从AD中检索组织单位的名称。然后,它从每个组织单位获取用户,对他们进行处理,并将信息发送到另一个网络应用程序。
AD中的组织单位和用户可以同时具有英文和俄文名称。
所以当我用俄语系统语言在Windows中运行我的应用程序时,一切都很好。
但是,当我试图在Windows Server(或使用英语系统语言的Windows 7)上运行它时,我会得到"?"序列,而不是俄语字符串,两者都在:中
- 日志文件
- 控制台输出
- Active Directory搜索字符串,其中包含组织单位的名称
在应用程序内部,我尝试使用std::string
和std::wstring
来保存从Active Directory中提取的数据,得到了相同的结果——"?"而不是俄语单词。
在开发者平台上使用MSVS 2013、Windows 8.1。和libLDAP(设置版本3)连接到Active Directory。
我需要做些什么才能使我的应用程序正确处理俄语字符串?
刚刚找到解决方案
我使用函数MultiByteToWideChar
和WideCharToMultiByte
在std::string
和std::wstring
之间进行转换,始终以CP_ACP
为第一参数。当我把它改成CP_UTF8
时,一切都很好。
顺便说一下,我还将所有项目文件的编码更改为UTF-8,没有BOM。
@IInspectable,感谢您对的帮助
相关文章:
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 对字符串进行排序时,在c++中处理sort()
- 是否可以在c++中处理字符串流中的各个元素
- 方便地对C++中的所有字符串文字进行模糊处理
- 在处理任何字符大小的模板中使用字符串文本
- 我如何处理有关输入的字符串大小超过字符数组设置大小的错误?
- 如何以这种方式处理字符串数组
- 在C++中使用指针进行字符串处理
- 如何在我的C++程序中调试字符串处理
- 选择编码和字符串处理
- C++中的Unicode字符串处理
- C字符串处理函数获取子字符串
- C++ Win32:基本字符串处理
- 为什么 Ruby 字符串处理速度很慢
- 将 java 字符串处理成原生 C/C++ for Android Studio+NDK
- c++中的字符串处理和内存管理
- c和c++混合编程中的字符串处理
- C++ 标准输入的 IO 优化和字符串处理
- c++字符串处理中的重复字符跳过
- 动态数组 - C++ - 重载运算符>>并使用 C 样式字符串处理输入