5

我创建一个这样的 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)

4

1 回答 1

6

QUrlQuery 的 toString 默认解码百分比编码。如果您想要编码版本,请尝试:

qurlqr.toString(QUrl::FullyEncoded)

此外,您不需要通过替换字符来手动编码字符串;您可以改为使用QUrl::toEncoded()(我建议您阅读QUrlQuery文档)。

于 2013-05-19T14:49:16.897 回答