J'ai un simple morceau de code qui ouvre un flux de fichiers & imprime des choses. Dès qu'il frappe un caractère Unicode, il arrête de lire.caractères Unicode ne pas lire - C++
Mon système est réglé sur paramètres régionaux japonais & Visual Studio est réglé pour compiler en unicode. Pas sûr de ce qui se passe.
fichier:
<abc \ 单位孤>hajslklfasjflkesjfleajflj
Fichier Hex Dump:
EF BB BF 3C 61 62 63 20 5C 20 E5 8D 95 E4 BD 8D
E5 AD A4 3E 68 61 6A 73 6C 6B 6C 66 61 73 6A 66
6C 6B 65 73 6A 66 6C 65 61 6A 66 6C 6A 0D 0A
Code de la pièce:
std::wifstream fin(path, std::ios::binary);
fin.imbue(std::locale(fin.getloc(), new std::codecvt_utf8_utf16<wchar_t, 0x10ffff, std::consume_header>));
if (!fin.good()) return;
while (fin.good()) {
std::wcout << (wchar_t)fin.get() << "\n";
}
fin.close();
Sortie:
http://www.cplusplus.com/reference/ios/ios/good/ pourquoi ne pas savoir exactement pourquoi votre flux n'est plus bon. – thang
Etes-vous sûr que le fichier est codé en UTF8? –
Pouvez-vous faire un vidage hexadécimal du fichier? –