赞
踩
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 内部采用的是Unicode,Unicode 包含 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();
}
编码,保存,编译,运行,一切都很顺利,可是结果呢:
<
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。