问题的提出:

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文件中文乱码问题解决相关推荐

  1. python json.dumps慢_python json.dumps中文乱码问题解决

    json.dumps(var,ensure_ascii=False)并不能解决中文乱码的问题 json.dumps在不同版本的Python下会有不同的表现, 注意下面提到的中文乱码问题在Python3 ...

  2. Zip文件中文乱码问题解决方法(MAC->Windows)

    Zip文件中文乱码问题解决方法(MAC->Windows) 参考文章: (1)Zip文件中文乱码问题解决方法(MAC->Windows) (2)https://www.cnblogs.co ...

  3. UTF-8的CSV文件中文乱码问题解决办法

    UTF-8的CSV文件中文乱码问题解决办法 参考文章: (1)UTF-8的CSV文件中文乱码问题解决办法 (2)https://www.cnblogs.com/leaves1024/p/1117138 ...

  4. 解决网页打开json文件中文乱码情况

    解决网页打开json文件中文乱码情况 原因:保存json文件的格式不对 解决办法:另存json文件,保存的时候将编码类型修改为UTF-8,如图所示.将新json文件替换掉原json文件就好啦

  5. 关于JAVA导出word或者excel文件中文乱码问题解决

    搜了一下,发现网上都是解决文件名乱码的问题,这里记录一下从数据库查询出的数据写入文件中文乱码的问题 个人采用的是对象查询出来以后转为json字符串,然后字符串进行转码,再转成jsonObject格式 ...

  6. bootstrap table export插件导出pdf格式文件中文乱码问题解决办法

    bootstrap table export插件导出pdf格式文件中文乱码的问题折腾了我整整两天,网上到处都是改源码,自己设置字体的方案,我都没搞定.结果今天看到官方文档(地址:GitHub - hh ...

  7. jsp include标签引入html文件中文乱码问题解决

    在jsp中使用<%@include file="in.html" %>导入html页面时,如果html页面里有中文,就会产生乱码.检查jsp文件和html文件的编码,编 ...

  8. 【json】json文件中文乱码

    异常现象: 异常原因: 一般是由编码格式未正确设置所致 解决方法: json文件右键->打开方式->待编码功能的JSON编辑器->选择UTF-8

  9. nodejs读取本地json文件中文乱码问题

    npm init npm install npm install express  --save express 文件名 app.js文件中修改: 第一种方式: const express = req ...

最新文章

  1. 重磅! SLAM从入门到精通系统教程汇总
  2. Visual Studio的一些快捷键(转载)
  3. java 底层运行_从表面到底层丨Java和JVM的运行原理,现在带给你
  4. VB 6.0中如何访问EXCEL 2007及EXCEL 2010
  5. C#中多线程 委托的使用
  6. http简介看这篇就够了
  7. 手把手教你做一辆mini平衡自行车!
  8. java class 关键字_java关键字及其作用
  9. 排位重要还是媳妇儿重要?
  10. maven 总结整理(二)——download source code
  11. 基于matlab的光伏电池通用数学模型,基于MATLAB的光伏电池通用数学模型.doc
  12. 易语言窗口c_句柄取进程名,通过进程名取窗口句柄
  13. 解构淘宝SPM/SCM流量跟踪体系
  14. 分布式机器学习平台比较
  15. 解决VMware虚拟机中Ubuntu 22.04无法联网, 安装VMwareTools失败,未发现软件包open-vm-dkms,open-vm-tools问题解决
  16. 此生不戒多巴胺—冲刺总结
  17. alist搭建云盘管理程序。
  18. 我曾经遇见过一个我最想照顾一生的女孩,后来……没有后来
  19. 算法导论中LCS的C++实现程序
  20. FCKEditor用法

热门文章

  1. 计算机可移动磁盘无法显示图片,手机插电脑不显示可移动磁盘的详细解决方法...
  2. matlab静态变量怎样分配内存,matlab中的静态变量
  3. 计算机usb2.0失效,Win10电脑USB2.0-CRW没有驱动程序的解决方法
  4. 我教育和科研计算机网是指,我校成为中国教育和科研计算机网湘潭城市节点单位...
  5. BUUCTF--- LFI-------本地文件包含(Local File Include)
  6. mysql无法初始化数据库引擎_mysql使用模板解决旧数据处理,默认初始化数据的通用方法!...
  7. 按住 ctrl 并滚动鼠标滚轮才可缩放地图_Firefox 73 将引入全局缩放功能,在所有网站都可适用...
  8. python的0基础入门语法_学习小结(1)
  9. Ubuntu安装MDK
  10. python系统学习:函数积累(持续更新)