Запись в файл в 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?
2
252
Do you like it? Share on social networks!
- Last comments
- AKApril 1, 2025, 11:41 a.m.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPMarch 9, 2025, 4:14 p.m.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМNov. 22, 2024, 9:51 p.m.Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Now discuss on the forum
- fFeb. 15, 2025, 1:46 p.m.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
- Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
Добрый день.
Спасибо, получилось. Только еще понадобилось преобразовать строку в QByteArray. Функция теперь выглядит следующим образом:
также "QTextCodec *Codec1251=QTextCodec::codecForName("Windows-1251");" нужно заменить на " QTextCodec *Codec1251=QTextCodec::codecForLocale();", так как кодировка моей системы не Windows-1251, и многая кириллица отображалась некорректно, а какая кодировка используется моей виндой - я не знаю