Запись в файл в utf-8
Нужно сохранить текст QString в файл в кодировке utf-8. Использую метод .toutf8, однако результирующий файл все равно получается в кодировке ascii, и на плеере, куда я загружаю текстовый файл, русские символы отображаются кракозябрами.
Вот все мои действия: я создают плейлист с помощью аимпа, сохраняю его. Насколько я знаю, сохраняется он в кодировке ascii. Далее открываю программу, загружаю этот созданный плейлист. Моя программа заменяет в нем пути к песням с одинх на другие и сохраняет получивший текст в новый файл.
Код
#include <QTextStream> #include <QCheckBox> #include <QString> #include <QMessageBox> using namespace std; QString PathToFile, WhatReplace1, ReplaceFor1, WhatReplace2, ReplaceFor2, SaveAs1, SaveAs2, SaveAs3, TextNotChanged, Result1, Result2; bool CopyPlayer=1; int radiobutton=0; QString MainWindow::FuncReplace(QString TextNotChangedF, QString WhatReplace, QString ReplaceFor) { int i,j, LenTNC, LenWR; LenTNC=TextNotChangedF.size(); LenWR=WhatReplace.size(); QString Result; for(i=0;i<LenTNC;i++) { QString buffer; for(j=i;j<LenWR+i;j++) { buffer.append(TextNotChanged[j]); } if(buffer==WhatReplace) { Result.append(ReplaceFor); i+=LenWR; } Result.append(TextNotChangedF[i]); } return (Result); }
......
void MainWindow::on_pushButtonStart_clicked() //----------START---------- { ..... //Saving //File 1 QFile Save1File(SaveAs1); Save1File.open(QFile::WriteOnly); QTextStream Save1stream(&Save1File); Save1stream<<Result1; Save1File.close(); //File 2 QFile Save2File(SaveAs2); Save2File.open(QFile::WriteOnly); QTextStream Save2stream(&Save2File); Save2stream<<Result2; Save2File.close(); //File 3 (to player) CopyPlayer=ui->checkBox->checkState(); if(CopyPlayer==1) { QFile Save3File(SaveAs3); Save3File.open(QFile::WriteOnly); QTextStream Save3stream(&Save3File); Save3stream<<Result1.toUtf8(); Save3File.close(); } setting(); }
Как можно добиться того, чтобы получаемый файл был в utf-8?
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
B
- Bogdannn
- 28 марта 2024 г. 2:15
C++ - Тест 001. Первая программа и типы данных
- Результат:46баллов,
- Очки рейтинга-6
Последние комментарии
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5 февраля 2024 г. 9:50
EVA25 декабря 2023 г. 18:30
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
Как получить в массив значения из связанной модели? Спасибо, разобрался:))
AC
QML Обнулить значения SpinBox Доброго времени суток, не могу разобраться с обнулением значение SpinBox находящего в делегате. import QtQuickimport QtQuick.ControlsWindow { width: 640 height: 480 visible: tr…
Alexandru Codreanu19 января 2024 г. 19:57
BlinCT27 декабря 2023 г. 16:57
Дмитрий10 января 2024 г. 12:18
Evgenii Legotckoi12 декабря 2023 г. 14:48
Добрый день.
Спасибо, получилось. Только еще понадобилось преобразовать строку в QByteArray. Функция теперь выглядит следующим образом:
также "QTextCodec *Codec1251=QTextCodec::codecForName("Windows-1251");" нужно заменить на " QTextCodec *Codec1251=QTextCodec::codecForLocale();", так как кодировка моей системы не Windows-1251, и многая кириллица отображалась некорректно, а какая кодировка используется моей виндой - я не знаю