gpt4 book ai didi

c++ - 如何在 QUrl 中包含百分号

转载 作者:行者123 更新时间:2023-11-30 02:49:23 25 4
gpt4 key购买 nike

我是从今天下午开始学习 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

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

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

感谢任何帮助。谢谢。

最佳答案

事实证明这是一个棘手的问题。这是我想出的解决方案:

代码

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 中描述的某些行为,其中指出

Sets the query string of the URL to query. The string is inserted as-is, and no further encoding is performed when calling toEncoded().

This function is useful if you need to pass a query string that does not fit into the key-value pattern, or that uses a different scheme for encoding special characters than what is suggested by QUrl.

Passing a value of QByteArray() to query (a null QByteArray) unsets the query completely. However, passing a value of QByteArray("") will set the query to an empty value, as if the original URL had a lone "?".

引用资料

关于c++ - 如何在 QUrl 中包含百分号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com