Qt读取本地编码为ANSI的json文件,并转为QJsonDocument

Qt 中提供了处理JSON数据类型的类,而处理JSON数据的基础就是将数据转换为可供Qt处理的数据类型,当我们读取的.json文件编码格式为ANSI时,使用

QJsonDocument::fromJson(const QByteArray &json, QJsonParseError *error = nullptr)进行转换时,就会出现转换失败的情况,因为QJsonDocument::fromJson()转换的二进制码流数据需要采用UTF-8编码,而Qt获取的JSON的编码格式不是UTF-8时,就会出现转换失败。下面介绍两种字符转换方法:

一、使用QTextCodec进行编码转换:

QByteArray js = file.readAll();       
QTextCodec* codec = QTextCodec::codecForName("GBK");
QString jsStr = codec->toUnicode(js);
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsStr.toUtf8());
qDebug()<<jsonDocument;

二、使用QString::fromLocal8Bit()进行转换:

QByteArray js = file.readAll();       
QString jsStr = QString::fromLocal8Bit(js);
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsStr.toUtf8());
qDebug()<<jsonDocument;

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页