我有网址: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
手动格式化参数?
答案 0 :(得分:2)
由于安全问题,您必须更换冒号。
更多信息:http://www.blooberry.com/indexdot/html/topics/urlencoding.htm
您可以对冒号使用百分比编码(":" - >"%3A"),请参阅http://qt-project.org/doc/qt-5.0/qtcore/qurl.html#fromPercentEncoding和http://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::setEncodedURL
和QUrl::toEncoded
http://harmattan-dev.nokia.com/docs/platform-api-reference/xml/daily-docs/libqt4/qurl.html
您使用的是哪个版本的Qt?
IIRC Qt 3使用QUrl:encode