Die Datei ist UTF-8 (65001) codiert. Ich kann keine kyrillischen Symbole daraus lesen.C++ Kann kyrillischen UTF-8-Text nicht aus Datei lesen
CString FNAME;
CStdiofile fNFR;
fNFR.Open(_T("LFS200.25"), CFile::modeRead);
fNFR.ReadString(FNAME);
Und bekam dies:
Зимний максимум 1989/90 гг.
statt dessen:
Зимний максимум 1989/90 гг.
Versuchte
setlocale(LC_ALL, "Rus");
noch das gleiche Problem.
Wie bekomme ich die richtige Zeichenfolge?
* Dies ist * UTF8. C++ hat 16-Bit-Zeichen (char16_t) und Zeichenfolgen, aber UTF8-Zeichenfolgen werden als Zeichen behandelt. Wenn Sie die UTF8-Bytes in UTF16 konvertieren möchten, benötigen Sie Codecvt –
Überprüfen Sie [diese Frage auf UTF-Unterstützung in C++] (http://stackoverflow.com/questions/6796157/unicode-encoding-for-string-literals-in-c11) und die Seite [String and Character Literals] (https://msdn.microsoft.com/en-us/library/69ze775t.aspx) in MSDN –
Überprüfen Sie [codecvt_utf8_utf16] (http://en.cppreference.com/w/cpp/locale/codecvt_utf8_utf16). Sie sollten in der Lage sein, Ihre UTF8-Zeichenfolge in UTF16 zu konvertieren mit 'std :: u16string u16_conv = std :: wstring_convert, char16_t> {}. From_bytes (u8);' –