qt 写json文件解决中文乱码(一)

本文详细介绍了在Qt中如何处理中文乱码问题,通过使用fromLocal8Bit和toUtf8函数实现本地字符集(如GBK)与Unicode之间的转换。文章提供了具体的代码示例,展示了在写入文件时如何正确编码和解码字符串,确保中文字符的正常显示。
摘要由CSDN通过智能技术生成

转 参考:https://blog.csdn.net/ikisstherain/article/details/60879427

 

qt fromLocal8Bit()函数可以设置编码。
QT默认的编码是unicode,不能显示中文的
windows默认使用(GBK/GB2312/GB18030)
使用fromLocal8Bit()函数,实现了从本地字符集GB到Unicode的转换,用于处理汉语显示乱码等问题

static inline QString fromLocal8Bit(const QByteArray &str);该函数返回的是String类型的数

 

1. 字符串变量 QString toUtf8 函数

QByteArray QString::toUtf8() const   返回字节流

Returns a UTF-8 representation of the string as a QByteArray.

UTF-8 is a Unicode codec and can represent all characters in a Unicode string like QString.

2. fromLocal8Bit 函数

  QString QString::fromLocal8Bit(const QByteArray &str)        

Returns a QString initialized with the 8-bit string str.

 

处理步骤:

   1.   转为字节流   调用toUtf8

   2.    从GBK转为unicode    调用fromLocal8Bit

Qstring str;

QJsonObject root;
root.insert("name",QString::fromLocal8Bit((str).toUtf8()));

.....

生成文件

{"name":"工程"}  在windows下  字符编码格式为 : utf-8 无BOM

 

上述的逆序转换 

fromUtf8(prjName.toLocal8Bit()  toLocal8Bit 转为系统 bytearray

特别提醒:在qt中  只有在要写入文件比如 本人遇到的例子, 才进行转码

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值