Top.Mail.Ru
Ответы
Аватар пользователя
12лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Сохрание файла с кодировкой utf-8 (WIN API CreateFile, Qt5, C++)

Всем привет!

(Qt 5, C++, Win API)
Короче: сохраняю в файл wstring (через WIN API WriteFile, асинхронный ввод) , потом читаю из файла массивом wchar_t.

Проблема: записывается всё хорошо, а вот считывается фигня. Но если поменять кодировку в файле на utf-8, то всё корректно считается.
wchar_t n[num];
ReadFile(hFileb,
&n,
sizeof(n),
&dwBytesRead,
&ovl);

Вопрос: как сохранять файл в utf-8, а не в asci? (пытался юзать QTextCodec, но не заработало/не разобрался)

Дополнен

пишу курсач и повсеместное использование Win API - это одно из требований к проекту

По дате
По рейтингу
Аватар пользователя
Новичок
12лет

Во-первых, непонятно, как вы меняете кодировку файла (сторонней программой?) , какая при этом изначально указана в этой программе кодировка файла.
Во-вторых, если записывать вчар_т (тупые ответы не дают писать на английском) , то файл будет в кодировке ЮНИКОД (а не АСКИИ) .
В-третьих, для адекватного ответа нужно привести фрагмент кода с открытием/записью/закрытием файла, затем открытием/чтением/закрытием файла без асинхронности (для простоты - т. к. это вряд ли проблема в этом) , а также объявлением и инициализацией всех буферов вчар_т или встринг.

Наконец, чтобы записать в УТФ8 можно в неё сконвертить встринг через ВайдЧарТуМультиБайт (но это вряд ли поможет в данном случае).

Аватар пользователя
Искусственный Интеллект
12лет

а, извиняюсь, зачем, используя Qt ты пользуешься какими-то виндовыми апишными функциями ?