我正在开发一个使用MFC和VisualC++库的遗留代码。我需要创建一个可以保存西里尔词的CString向量,如下面的示例代码片段所示:
std::vector<CString> vecContainingCyrillicWords;
vecContainingCyrillicWords.push_back(_T("English Words"));
vecContainingCyrillicWords.push_back(_T("Русские слова"));问题:如下面的调试结果所示,没有正确设置西里尔词。如何将西里尔词赋给CString类型的变量

发布于 2021-04-16 12:16:45
调试器没有正确显示它这一事实并不意味着它没有被正确地分配给CString。
确切地说,CString中的内容取决于您是否为Unicode设置。检查MBCS符号或UNICODE符号是在编译时定义的。如果不是Unicode,则字符是一个字节ASCII值,当您要显示/打印字符时,必须确保使用正确的代码页。调试器似乎不正确地显示非英语字符,可能将Unicode解释为一个字节字符,或者根据欧洲代码页(可能是1252)解释单个字节字符的高ASCII值,而不是支持西里尔字母的代码页(通常为1251)。后一种可能性是在我看来是什么样子,但如果不知道您是否定义了Unicode,我就无法确定。
发布于 2021-04-19 12:26:04
问题在于文件编码类型。该文件已经用utf-8编码保存,因此,我期望得到正确的结果。但我必须将文件编码更改为UTF8 with BOM,然后将正确的值推送到向量中。
也是由@Simon在上面的评论中建议的!
https://stackoverflow.com/questions/67124923
复制相似问题