• 4069阅读
  • 7回复

由字符串生成QUrl时如何不要对其中的特殊字符进行编码? [复制链接]

上一主题 下一主题
离线yearl
 

只看楼主 倒序阅读 楼主  发表于: 2015-10-06
形如:http://example.com/?aa^bbb的字符串,其中含有特殊字符   ^
在生成QUrl时,如何控制才能不要对 ^ 进行编码?
即生成QUrl("http://example.com/?aa^bbb")而不是QUrl("http://example.com/?aa%E5bbb")。
不要将  ^   编码成   %E5

离线yearl

只看该作者 1楼 发表于: 2015-10-11
    QUrl url = QUrl::fromEncoded("http://example.com/?aa^bbb");
    qDebug() << url;

输出的是
QUrl("http://example.com/?aa%5Ebbb")
而我想要的是
QUrl("http://example.com/?aa^bbb")
实际运行时抓包,抓到的也是"http://example.com/?aa%5Ebbb"
小弟实在愚钝,反复看文档并不断尝试,但仍得不到解答。

离线roywillow

只看该作者 2楼 发表于: 2015-10-11
你这么做的目的是?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线yearl

只看该作者 3楼 发表于: 2015-10-12
回 roywillow 的帖子
roywillow:你这么做的目的是? (2015-10-11 21:59) 

终于有人关心这个问题了。谢谢。

是这样:
公司网内有一个网站,其url请求中包含有^这一特殊字符。

不管其是否符合规范,即使不符合规范。关键是用其他浏览器能够成功访问,IE、Firefox等。
可是我写的浏览器(作为一个应用程序的一部分)却不能访问这个链接。后来抓包分析才发现是特殊字符编码的问题。

由于用IE、Firefox等能成功访问,所以我无法说服别人去改这个网站。
我记得是否对url进行编码是可以控制的,为啥在QT里就无法控制呢?变得透明了。

离线roywillow

只看该作者 4楼 发表于: 2015-10-12
回 yearl 的帖子
yearl:终于有人关心这个问题了。谢谢。
是这样:
公司网内有一个网站,其url请求中包含有^这一特殊字符。
....... (2015-10-12 08:58) 

你似乎需要看一下QUrl::​ComponentFormattingOptions这一部分?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线kenierlee

只看该作者 5楼 发表于: 2015-10-13
Qt4没有这个问题,Qt5的话,似乎需要改源码重新编译了。
离线yearl

只看该作者 6楼 发表于: 2015-10-21
QT4.8.4试过了。还是不行。
load之前显示的url 是没有编码的。
loadFinished后
qDebug() << webView()->url();
显示的也是没被编码的。
然而不能正常打开网页。
抓包一看,还是编了码了。
此题无解
离线yearl

只看该作者 7楼 发表于: 2015-10-28
难道真的没救了?
快速回复
限100 字节
 
上一个 下一个