Russian Qt Forum

Qt => Вопросы новичков => Тема начата: demaker от Апрель 11, 2014, 13:45



Название: Запись и чтение с файла
Отправлено: demaker от Апрель 11, 2014, 13:45
Подскажите
Делаю запись в файл,
но почему-то если читаем русские символы,то он вместо них записывает знаки вопроса.
А если английские то все норм.
Почему так?


Название: Re: Запись и чтение с файла
Отправлено: OKTA от Апрель 11, 2014, 14:02
Проблемы с кодировками. В какой кодировке писали, в такой и читайте.


Название: Re: Запись и чтение с файла
Отправлено: demaker от Апрель 11, 2014, 14:09
Код
C++ (Qt)
 
//ставлю кодировку
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
 
QString str = tr("ПРИВЕТ");
 
//пишу в файл
file.write(QVariant(str).toByteArray);
 
 

Что делать???


Название: Re: Запись и чтение с файла
Отправлено: OKTA от Апрель 11, 2014, 14:12
А читаешь как?


Название: Re: Запись и чтение с файла
Отправлено: demaker от Апрель 11, 2014, 15:03
 QByteArray ba = file.readAll();


Название: Re: Запись и чтение с файла
Отправлено: OKTA от Апрель 11, 2014, 15:22
Можно делать так с кодировками:
через кодеки
Код:
QTextCodec* codec = QTextCodec::codecForName("Windows-1251");
QByteArray encodedByteArray = ...;
QString decodedString = codec->toUnicode(encodedByteArray);

или глобально

Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(""Windows-1251"));


Название: Re: Запись и чтение с файла
Отправлено: Vamireh от Апрель 11, 2014, 15:22
Код:
#include <QCoreApplication>
#include <QDebug>
#include <QTextStream>
#include <QFile>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QFile fout("D:/LocaleTest.txt");
    fout.open(QIODevice::WriteOnly);
    QTextStream out(&fout);
    out.setCodec("Windows-1251");
    out << QObject::tr("Привет");

    fout.close();

    QFile fin("D:/LocaleTest.txt");
    fin.open(QIODevice::ReadOnly);
    QTextStream in(&fin);
    in.setCodec("Windows-1251");
    QString str;
    in >> str;

    qDebug() << str;

    return a.exec();
}



Название: Re: Запись и чтение с файла
Отправлено: Fregloin от Апрель 13, 2014, 09:53
QString::toLocal8bit посмотрите в эту сторону.