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文件中文乱码问题解决相关推荐
- python json.dumps慢_python json.dumps中文乱码问题解决
json.dumps(var,ensure_ascii=False)并不能解决中文乱码的问题 json.dumps在不同版本的Python下会有不同的表现, 注意下面提到的中文乱码问题在Python3 ...
- Zip文件中文乱码问题解决方法(MAC->Windows)
Zip文件中文乱码问题解决方法(MAC->Windows) 参考文章: (1)Zip文件中文乱码问题解决方法(MAC->Windows) (2)https://www.cnblogs.co ...
- UTF-8的CSV文件中文乱码问题解决办法
UTF-8的CSV文件中文乱码问题解决办法 参考文章: (1)UTF-8的CSV文件中文乱码问题解决办法 (2)https://www.cnblogs.com/leaves1024/p/1117138 ...
- 解决网页打开json文件中文乱码情况
解决网页打开json文件中文乱码情况 原因:保存json文件的格式不对 解决办法:另存json文件,保存的时候将编码类型修改为UTF-8,如图所示.将新json文件替换掉原json文件就好啦
- 关于JAVA导出word或者excel文件中文乱码问题解决
搜了一下,发现网上都是解决文件名乱码的问题,这里记录一下从数据库查询出的数据写入文件中文乱码的问题 个人采用的是对象查询出来以后转为json字符串,然后字符串进行转码,再转成jsonObject格式 ...
- bootstrap table export插件导出pdf格式文件中文乱码问题解决办法
bootstrap table export插件导出pdf格式文件中文乱码的问题折腾了我整整两天,网上到处都是改源码,自己设置字体的方案,我都没搞定.结果今天看到官方文档(地址:GitHub - hh ...
- jsp include标签引入html文件中文乱码问题解决
在jsp中使用<%@include file="in.html" %>导入html页面时,如果html页面里有中文,就会产生乱码.检查jsp文件和html文件的编码,编 ...
- 【json】json文件中文乱码
异常现象: 异常原因: 一般是由编码格式未正确设置所致 解决方法: json文件右键->打开方式->待编码功能的JSON编辑器->选择UTF-8
- nodejs读取本地json文件中文乱码问题
npm init npm install npm install express --save express 文件名 app.js文件中修改: 第一种方式: const express = req ...
最新文章
- 重磅! SLAM从入门到精通系统教程汇总
- Visual Studio的一些快捷键(转载)
- java 底层运行_从表面到底层丨Java和JVM的运行原理,现在带给你
- VB 6.0中如何访问EXCEL 2007及EXCEL 2010
- C#中多线程 委托的使用
- http简介看这篇就够了
- 手把手教你做一辆mini平衡自行车!
- java class 关键字_java关键字及其作用
- 排位重要还是媳妇儿重要?
- maven 总结整理(二)——download source code
- 基于matlab的光伏电池通用数学模型,基于MATLAB的光伏电池通用数学模型.doc
- 易语言窗口c_句柄取进程名,通过进程名取窗口句柄
- 解构淘宝SPM/SCM流量跟踪体系
- 分布式机器学习平台比较
- 解决VMware虚拟机中Ubuntu 22.04无法联网, 安装VMwareTools失败,未发现软件包open-vm-dkms,open-vm-tools问题解决
- 此生不戒多巴胺—冲刺总结
- alist搭建云盘管理程序。
- 我曾经遇见过一个我最想照顾一生的女孩,后来……没有后来
- 算法导论中LCS的C++实现程序
- FCKEditor用法
热门文章
- 计算机可移动磁盘无法显示图片,手机插电脑不显示可移动磁盘的详细解决方法...
- matlab静态变量怎样分配内存,matlab中的静态变量
- 计算机usb2.0失效,Win10电脑USB2.0-CRW没有驱动程序的解决方法
- 我教育和科研计算机网是指,我校成为中国教育和科研计算机网湘潭城市节点单位...
- BUUCTF--- LFI-------本地文件包含(Local File Include)
- mysql无法初始化数据库引擎_mysql使用模板解决旧数据处理,默认初始化数据的通用方法!...
- 按住 ctrl 并滚动鼠标滚轮才可缩放地图_Firefox 73 将引入全局缩放功能,在所有网站都可适用...
- python的0基础入门语法_学习小结(1)
- Ubuntu安装MDK
- python系统学习:函数积累(持续更新)