求助,QUrl如何直接发送%uxxxx而不被编码

Jun丶F 2018-04-13 01:47:34
浏览器的中文会被编码成%uxxxx发送
用QT模拟,%uxxxx会被编码成%25uxxxx。也就是把%变成了%25

有办法不让他编码吗,直接发%uxxxx

文档中
void QUrl::setQuery(const QString &query, ParsingMode mode = TolerantMode)
In DecodedMode, '%' stand for themselves and encoded characters are not possible.
我设置了url.setQuery("%uxxxx", QUrl::DecodedMode)
但输出还是会把%uxxxx变成了%25uxxxx

求助方法。。
...全文
2980 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
longjr020 2021-07-03
  • 打赏
  • 举报
回复

自己解决了。本身QT是4.8.7的。temp是utf8编码的中文网址。
//得到字节数组
QByteArray ba=temp.toLocal8Bit();
//排除了/:
QByteArray ba2 =ba.toPercentEncoding("/:");
//生成url
m_Url = QUrl::fromEncoded( ba2 );

不要用默认QURL或者setUrl(),会将百分号%解析成%25。于是服务器总是报错没有那个文件。

longjr020 2021-07-03
  • 打赏
  • 举报
回复

解决了吗?怎么解决?

Jun丶F 2018-08-12
  • 打赏
  • 举报
回复
@罗布菜
嗯,是自己抓包网页的内容,他的网址确实存在没有被编码的

我改用Qt4的方法解决了。
结题
Marcelxx 2018-04-28
  • 打赏
  • 举报
回复
QUrl::fromPercentEncoding 会对URL进行编码。
萝布菜 2018-04-28
  • 打赏
  • 举报
回复
引用 2 楼 ilvfeng 的回复:
终于有人回复。谢谢。 你这个是文档的demo,早就试过了 这你上面这个只是改变了QUrl打印输出的格式 本质发送出去的格式是没有改变的,你可以抓包看看..
不是很明白你的使用场景。 copy.toString()就是要发送不被编码的源字符串,发送的时候怎么还会被编码 - -!
Jun丶F 2018-04-21
  • 打赏
  • 举报
回复
终于有人回复。谢谢。 你这个是文档的demo,早就试过了 这你上面这个只是改变了QUrl打印输出的格式 本质发送出去的格式是没有改变的,你可以抓包看看..
weixin_39215441 2018-04-21
  • 打赏
  • 举报
回复
QString query = QUrl::fromPercentEncoding("%uxxxx"); 适用UTF-8的URL编码
萝布菜 2018-04-19
  • 打赏
  • 举报
回复
参考

QUrl original("http://example.com/?q=a%2B%3Db%26c");
  QUrl copy(original);
  copy.setQuery(copy.query(QUrl::FullyDecoded), QUrl::DecodedMode);

  qDebug() << original.toString();   // prints: http://example.com/?q=a%2B%3Db%26c
  qDebug() << copy.toString();       // prints: http://example.com/?q=a+=b&c

16,233

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧