C++ C++;Can';t从文件中读取UTF-8西里尔文字

C++ C++;Can';t从文件中读取UTF-8西里尔文字,c++,visual-studio-2015,utf-8,cyrillic,cfile,C++,Visual Studio 2015,Utf 8,Cyrillic,Cfile,该文件是UTF-8(65001)编码的。我看不懂上面的西里尔文符号 CString FNAME; CStdiofile fNFR; fNFR.Open(_T("LFS200.25"), CFile::modeRead); fNFR.ReadString(FNAME); 得到这个: Р—РёРјРЅРёР№ максимум 1989/90 РіРі. 与此相反: Зимний максимум 1989/90 гг. 尝试 setlocale(LC_ALL, "Rus

该文件是UTF-8(65001)编码的。我看不懂上面的西里尔文符号

CString FNAME;
CStdiofile fNFR;

fNFR.Open(_T("LFS200.25"), CFile::modeRead);
fNFR.ReadString(FNAME);
得到这个:

 Зимний максимум 1989/90 гг.
与此相反:

 Зимний максимум 1989/90 гг.
尝试

setlocale(LC_ALL, "Rus");
还是一样的问题

如何获得正确的字符串?

我在这里找到了答案(需要将utf-8转换为utf-16):

我在这里找到了答案(需要将utf-8转换为utf-16):

这是UTF8。C++具有16位字符(CHAR16YT)和字符串,但是UTF8字符串被视为字符。如果要将UTF8字节转换为UTF16,则需要codecvtCheck和MSDNCheck中的页面。您应该能够使用
std::u16string u16\u conv=std::wstring\u convert{}从字节(u8)转换UTF8字符串到UTF16这是UTF8。C++具有16位字符(CHAR16YT)和字符串,但是UTF8字符串被视为字符。如果要将UTF8字节转换为UTF16,则需要codecvtCheck和MSDNCheck中的页面。您应该能够使用
std::u16string u16\u conv=std::wstring\u convert{}从字节(u8)转换UTF8字符串到UTF16这不是一个好的解决方案。它是7年前编写的,当时C++没有原生Unicode支持。最后,只需调用
WideCharToMultiByte
。我百分之百肯定作者今天会告诉你“不要这样做!”,否则这不是一个好的解决办法。它是7年前编写的,当时C++没有原生Unicode支持。最后,只需调用
WideCharToMultiByte
。我百分之百肯定作者今天会告诉你“不要这样做!”或者