Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Annigilator от Январь 05, 2012, 13:51



Название: [РЕШЕНО]Чтение и сохранение файлов с кирилицей
Отправлено: Annigilator от Январь 05, 2012, 13:51
Здравствуйте  Уважаемые Программисты!

Есть работающий проэкт, в нём некий текст записывается в текстовый файл кирилицей, но после выхода из программы и при последующей загрузке, из файла читается тот же текст, но не в той кодировке, которая должна быть. Система Windows 7, кодировка системы наверное ANSI, а в программе я использую UTF-8.

Вот текст файла где происходит запись в файл:
Код:
bool MainWindow::saveToFile()
{
    QFile file(QDir::homePath() + "/.text1.conf");
    if(file.open(QIODevice::WriteOnly))
    {
        QTextStream stream(&file);
        for(int i = 0; i < model->tasks->count(); i++)
        {
            stream << (*model->tasks)[i].text;
            stream << QString(" ");
            stream << (*model->tasks)[i].minutes;
            stream << "\n";
        }
        file.close();
        return true;
    }
    else
    {
        return false;
    }
    return true;
}
И чтение из файла:
Код:
void MainWindow::loadFromFile()
{
    QFile file(QDir::homePath() + "/.text1.conf");
    if(file.exists())
    {
    if(file.open(QIODevice::ReadOnly))
    {
        QTextStream stream(&file);
        while(!stream.atEnd())
        {
            QString line = stream.readLine();
            QTextStream lineStream(line.toUtf8());
            QString text;
            int minutes;
            if(!line.trimmed().isEmpty())
            {
                text = "";
            while(!lineStream.atEnd())
                {
                QString temp;
                lineStream >> temp;
                bool ok = false;
                QVariant(temp).toInt(&ok);
                if(ok)
                {
                   int mins =  QVariant(temp).toInt(&ok);
                   minutes = mins;
                }
                if(!lineStream.atEnd())
                    text.append(temp + " ");
            }
            model->tasks->append(TaskRow(text, minutes));
            }
        }
        file.close();
    }
    else
    {
        QMessageBox::warning(this,"TTTTTTTTT");
        loadSampleData();
    }
    }
    else
    {
        loadSampleData();
    }
}
Как изменить код, чтобы чтение происходило кирилицы, а не иероглифов?


Название: Re: Чтение и сохранение файлов с кирилицей
Отправлено: kambala от Январь 05, 2012, 21:32
надо записывать и читать всё или в UTF-8 или в родной кодировке - определись какая тебе нужна. если родная, то просто убери вызов toUtf8() в методе чтения.


Название: Re: Чтение и сохранение файлов с кирилицей
Отправлено: Annigilator от Январь 05, 2012, 21:52
Спасибо!
Всё получилось.