一、问题简述
之前碰到过这样的问题,就是一个文本数据它不是utf-8格式的数据,因此在读取该数据之后,将其转换为QJsonDocument对象总是不成功。
QFile file(filePath);
//打开文件
if (!file.open(QIODevice::ReadOnly)) {
file.close();
return;
}
//加载所有数据
QByteArray wholeData = file.readAll();
file.close();
//转换为QJsonDocument
QJsonParseError error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(wholeData,&error);
二、解决方法
到最后找了一圈使用下面这种方式可以将其正确转换,这里记录一下:
QFile file(filePath);
//打开文件
if (!file.open(QIODevice::ReadOnly)) {
file.close();
return;
}
//加载所有数据
QByteArray wholeData = file.readAll();
file.close();
//转换为QJsonDocument
QJsonParseError error;
QTextCodec* utf8 = QTextCodec::codecForName("UTF-8");
QString content = utf8->toUnicode(wholeData.constData());
QJsonDocument jsonDoc = QJsonDocument::fromJson(content.toUtf8(),&error);