日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QJsonObject写入读出json文件中文乱码问题解决

發布時間:2023/12/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QJsonObject写入读出json文件中文乱码问题解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題的提出:

QJsonObject寫入讀出json文件中文亂碼。

復現步驟:

當json串很長時,我們一般采用流的形式寫入文本,否則會截斷導致寫入不全,如下為將一個很長的json字符串寫入qsModelFilePath文件保存。

QFile file(qsModelFilePath);if (!file.open(QIODevice::ReadWrite | QIODevice::Text)){qDebug() << "file error!";gpMessageHandler->addErrorMessage(STR("保存模型時出錯"));CMsgBox(STR("保存模型時出錯"), this).Exec();return;}QTextStream jsonStream(&file);//jsonStream.setCodec("UTF-8");//處理utf8中文jsonStream << strModelJson;file.close(); // 關閉file

如下為將上述的qsModelFilePath文件中的json讀出來:

QFile jsonFile(qsJsonFilePath);jsonFile.open(QIODevice::ReadOnly);QString strModelJson;QTextStream jsonStream(&jsonFile);//jsonStream.setCodec("UTF-8");//處理utf8中文while (!jsonStream.atEnd()){QString qsLineText = jsonStream.readLine();strModelJson.append(qsLineText);}strModelJson = strModelJson.toLower();strModelJson = strModelJson.replace(',', ','); // 防止在配置文件中輸入中文逗號jsonFile.close();// 使用json文件對象加載字符串QJsonParseError error;// 使用靜態函數獲取 QJsonDocument 對象QJsonDocument jsonDocument = QJsonDocument::fromJson(strModelJson.toUtf8(), &error);// 判斷是否對象if (!jsonDocument.isObject() || ( error.error != QJsonParseError::NoError)){return QJsonObject();}QJsonObject docObject = jsonDocument.object();QString strAbsoluteDir = docObject[g_pszAbsoluteDir].toString();

上述保存寫入json串到文件、從文件讀取json到QString必須都要加入下述代碼:

jsonStream.setCodec("UTF-8");//處理utf8中文

即將上面的該句注釋取消才能保證讀取json到QString代碼段中提取json串中含有中文字段的信息不亂碼(如下例,strAbsoluteDir 中含有中文):

QString strAbsoluteDir = docObject[g_pszAbsoluteDir].toString();

也就是說為了保證讀取出的信息中文不亂碼,必須在保存寫入json字符串到文件和從文件讀取json到QString兩端都加入如下代碼:

jsonStream.setCodec("UTF-8");//處理utf8中文

兩端任何一端缺少該句,都會引起亂碼

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的QJsonObject写入读出json文件中文乱码问题解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。