我创建一个类似这样的URL查询:

QString normalize(QString text)
{
    text.replace("%", "%25");
    text.replace("@", "%40");
    text.replace("‘", "%27");
    text.replace("&", "%26");
    text.replace("“", "%22");
    text.replace("’", "%27");
    text.replace(",", "%2C");
    text.replace(" ", "%20");

    return text;
}
QString key = "usermail";
QString value = "aemail@gmail.com";
QUrlQuery qurlqr;
qurlqr.addQueryItem(normalize(key), normalize(value));

QString result = qurlqr.toString();

预期的结果是:
usermail=aemail%40gmail.com.

但是我收到了:
usermail=aemail@gmail.com

我不知道为什么你能帮助我吗?

(我在Win7上使用Qt5)

最佳答案

默认情况下,QUrlQuery的toString会解码百分比编码。如果您想要编码版本,请尝试:
qurlqr.toString(QUrl::FullyEncoded)
同样,您也不需要通过替换字符来手动编码字符串。您可以改用QUrl::toEncoded()(建议您阅读QUrlQuery文档)。

关于Qt,QUrl,QUrl查询: Encoding special character in a query string,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16474381/

10-12 16:30
查看更多