Qt QUrl:不对url进行编码

时间:2013-06-17 17:58:47

标签: c++ qt

我有网址:https://example.com/hello?param=first:last。我希望它应该被百分比编码为https://example.com/hello?param=first%3Alast。但Qt原封不动。我的代码:

QUrl url("https://example.com/hello?param=first:last");
printf("Encoded: %s\n", url.toEncoded().constData());

我应该如何编码冒号?使用QString::toPercentEncoding手动格式化参数?

4 个答案:

答案 0 :(得分:2)

由于安全问题,您必须更换冒号。

更多信息:http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

您可以对冒号使用百分比编码(":" - >"%3A"),请参阅http://qt-project.org/doc/qt-5.0/qtcore/qurl.html#fromPercentEncodinghttp://qt-project.org/doc/qt-5.0/qtcore/qurl.html#toPercentEncoding

答案 1 :(得分:0)

关于URL中的结肠安全性已经有一些讨论。听起来它归结为我不熟悉的RFC依从性。

Is a colon safe for friendly-URL use?

看起来您可能需要替换任何“:”字符(在https :)之后自己。

答案 2 :(得分:0)

我认为QUrl :: toPercentEncoding()是你最好的选择。它默认编码所有标准字符,您可以手动指定自己的其他字符列表进行编码:

参考网址:
http://doc.qt.digia.com/4.7/qurl.html#toPercentEncoding

答案 3 :(得分:-1)

非常确定您需要QUrl::setEncodedURLQUrl::toEncoded

http://harmattan-dev.nokia.com/docs/platform-api-reference/xml/daily-docs/libqt4/qurl.html

您使用的是哪个版本的Qt?

IIRC Qt 3使用QUrl:encode