我有一个字符串,它成为url的查询字符串部分,必须进行url编码。
QString queryStringParam = "J1mOEfg/TC";
所以,我试图像这样使用QUrl::toPercentEncoding()
QString encodedQueryString = QUrl::toPercentEncoding(queryStringParam);
导致"J1mOEfg%2FT"
,但我正在调用的网络服务期待"J1mOEfg%2fT"
[注意'/'到'%20f'的编码中的小写'f']因此拒绝参数。它在服务方面可能很糟糕,但我无能为力。如何在保留参数的其余部分的情况下获得小写编码十六进制字符?
答案 0 :(得分:2)
我认为您不能使用标准功能,但您可以轻松编写自己的功能。在百分比编码的字符串中,特殊字符使用%
符号进行编码,后跟一对十六进制数字。知道了,你可以写一个这样的函数:
QString lowerPercentEncoding( QString str )
{
int index = str.indexOf("%");
while( index != -1 )
{
QString tmp = str.mid(index, 3);
str.replace(index,3,tmp.toLower());
index = str.indexOf("%", index + 1);
}
return str;
}