如何在QUrl中包含百分号

时间:2014-01-20 21:34:02

标签: c++ qurl

我从今天下午开始使用c ++,我很难过。

我有以下一行:

const QUrl command("http://192.168.11.11/subdomain/letters?t=somekeyword&p=%01")

但是当在QNetworkAccessManager中发送QUrl“命令”时,实际上是在%符号后添加 25 。 现在我知道QUrl在TolerantMode中,并且正在添加它认为它是用户输入错误。

不需要的结果:

http://192.168.11.11/subdomain/letters?t=somekeyword&p=%2501

如何阻止我的网址被修改?

我尝试将百分号加倍并插入反斜杠。

感谢任何帮助。 感谢。

1 个答案:

答案 0 :(得分:2)

这结果是一个棘手的问题。这是我提出的解决方案:

<强>代码

QByteArray rawQuery("t=somekeyword&p=%01");
QUrl command("http://192.168.11.11/subdomain/letters");
command.setEncodedQuery(rawQuery);
std::cout << command.toEncoded().data();

<强>结果

http://192.168.11.11/subdomain/letters?t=somekeyword&p=%01

备注

该解决方案依赖于setEncodedQuery中描述的某些行为,该行为表明了

  

设置要查询的URL的查询字符串。字符串按原样插入,调用toEncoded()时不再执行编码。

     

如果您需要传递一个不适合键值模式的查询字符串,或者使用不同于QUrl建议的特殊字符编码方案,则此函数非常有用。

     

将QByteArray()的值传递给查询(null QByteArray)会完全取消查询。但是,传递QByteArray(“”)的值会将查询设置为空值,就好像原始URL只有一个“?”。

<强>参考