我创建了一个这样的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)
答案 0 :(得分:5)
QUrlQuery的toString默认解码百分比编码。如果您想要编码版本,请尝试:
qurlqr.toString(QUrl::FullyEncoded)
此外,您不需要通过替换字符来手动编码字符串;您可以使用QUrl::toEncoded()
(我建议您阅读QUrlQuery文档)。