#include <QCoreApplication>
#include <QFile>
#include <QDebug>
#include <QTextCodec>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString path = "/home/abbapoh/Загрузки/Base_triton.txt";
qDebug()<<"path = "<<path;
QFile pFile(path);
if(pFile.exists()){
if(!pFile.open(QIODevice::ReadOnly | QIODevice::Text)){
// if(!pFile.open(QIODevice::ReadOnly)){
qCritical()<<"file not open";
return false;
}
else{
QByteArray baLine = pFile.readAll();
// если не хочется юзать кодек
// QString str((QChar*)baLine.data(), baLine.size() / 2);
QTextCodec *codec = QTextCodec::codecForName("UTF-16");
QString str = codec->toUnicode(baLine);
qDebug() << str;
pFile.close();
return true;
}
qCritical()<<"file not exists load file";
return false;
}
return a.exec();
}
Почему глючит readLine я понять не смог.
Была попытка читать блоками по 256 байт, но текст содержит китайщину, а значит там есть суррогатные пары, которые интерпретируются неверно, если конец блока попадает в середину пары.