QString中文编码

本文探讨了在Qt编程中使用QString处理中文编码时可能出现的乱码问题。QString内部采用Unicode编码,但当从其他编码(如GBK、UTF-8)转换时,需要正确指定编码方式。通过QUrl::toPercentEncoding和QString的相关构造函数可以解决Url中的中文编码,而QTextCodec则用于处理不同编码间的转换。在不同编码的源代码和编译器组合下,可能出现两种乱码,解决方法是正确设置QString默认采用的编码。
摘要由CSDN通过智能技术生成

1、背景

QString sCheckUpUrl(QString("seriesId=8&unit=t&name=%1").arg(QString::fromUtf8(QUrl::toPercentEncoding(QStringLiteral("螺纹@钢"))));

QString sGetWebSiteUrl =QString("%1%2").arg(c_sPriceCheckUpUrl).arg(sCheckUpUrl);

在Url中发送带有特殊字符的中文的字符串,需要把字符串转换为UTF-8,并转义,可以使用QUrl::toPercentEncoding(...),而后拼接进QString时需要告诉QString字符串是什么编码,因为在你

QString 内部采用的是UnicodeUnicode 包含 ASCII 和 Latin-1 作为子集,不告诉它的情况下,它默认选择了Latin-1会出现乱码。

 

 2、原理

    QString是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。

    很简单的问题,"我是中文"这样写的时候,它是传统的char 类型的窄字符串,我们需要的只不过是通过某种方式告诉 QString这四个汉字采用的那种编码。而问题一般都出在很多用户对自己当前的编码没太多概念,

 

下面这个小程序,估计大家会感到比较亲切。似乎有相当多的中文用户尝试写过这样的代码:

 

#include<QtGui/QApplication>

#include<QtGui/QLabel>

 

int main(int argc,char **argv)

{

QApplication app(argc, argv);

QStringa = "我是汉字";

QLabel label(a);

label.show();

return app.exec();

}

编码,保存,编译,运行,一切都很顺利,可是结果呢:

 <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值