QUrl toPercentEncoding()小写十六进制

时间:2012-09-25 05:14:51

标签: c++ qt encoding url-encoding qstring

我有一个字符串,它成为url的查询字符串部分,必须进行url编码。

QString queryStringParam = "J1mOEfg/TC";

所以,我试图像这样使用QUrl::toPercentEncoding()

QString encodedQueryString = QUrl::toPercentEncoding(queryStringParam);

导致"J1mOEfg%2FT",但我正在调用的网络服务期待"J1mOEfg%2fT" [注意'/'到'%20f'的编码中的小写'f']因此拒绝参数。它在服务方面可能很糟糕,但我无能为力。如何在保留参数的其余部分的情况下获得小写编码十六进制字符?

1 个答案:

答案 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;
}