栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

记录一次xpack使用乱码

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记录一次xpack使用乱码

QJsondocument提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

当前项目需要将大量结构体数据转换为json格式存储,此处我选择xpack(https://gitee.com/xyz347/xpack#基本用法),下载链接和使用方法原作者讲的足够清楚,因此不再赘述。我在使用过程主要是数据存储过程发现中文乱码。


提示:以下是本篇文章正文内容,下面案例可供参考

一、pandas是什么?

*.h文件

#include "xpack/json.h"using namespace std;struct LonLat_Struct{	double		dLon;	double		dLat;	double		dAlt;	XPACK(O(dLon, dLat, dAlt));};struct City_Struct{	char				qName[30];	LonLat_Struct		llS;	XPACK(O(qName, llS));};

 *.cpp

struct转json格式string

    QString str, str2;	QVector csVec;	City_Struct cs, cs2;	QByteArray a = QString::fromLocal8Bit("武汉").toLocal8Bit();	memcpy(cs.qName, a.data(), a.size());	cs.llS.dLon = 112;	cs.llS.dLat = 32;	cs.llS.dAlt = 300;	csVec.append(cs);	    //注意此处直接使用QString::fromStdString会乱码	str = QString::fromLocal8Bit(xpack::json::encode(cs).c_str());	QJsonParseError jsonError;	QJsonArray jsonArray;    //此处注意QJsondocument::fromJson返回为null大部分使用为编码格式问题,utf8	QJsondocument d = QJsondocument::fromJson(str.toUtf8());	QJsonObject j1 = d.object();	jsonArray.append(j1);	a = QString::fromLocal8Bit("黄冈").toLocal8Bit();	memcpy(cs2.qName, a.data(), a.size());	cs2.llS.dLon = 112.8;	cs2.llS.dLat = 32.3;	cs2.llS.dAlt = 400;	csVec.append(cs2);	str2 = QString::fromLocal8Bit(xpack::json::encode(cs2).c_str());	jsonArray.append(QJsondocument::fromJson(str2.toUtf8()).object());	QJsondocument document;	document.setArray(jsonArray);	byte = QString::fromUtf8(document.toJson(QJsondocument::Compact));

string解析转struct

    QVector csVec;	QJsondocument document = QJsondocument::fromJson(byte.toUtf8());	QJsonArray jsonArray = document.array();	int size = jsonArray.size();	for each (QJsonValue var in jsonArray)	{		City_Struct cs;		QString str = QJsondocument(var.toObject()).toJson();        //注意此处同样QString转string		xpack::json::decode(string(str.toLocal8Bit()), cs);		csVec.append(cs);	}

总结

本文出现中文乱码看似需要分析的地方比较多,实际如果我们按照xpack说明和熟悉qt json的使用方法后,基本可以确认问题是在QString和std::string互转过程出现。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/268480.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号