3

URLのクエリ文字列部分になる文字列があり、URLエンコードする必要があります。

QString queryStringParam = "J1mOEfg/TC";

だから、私はこのようにQUrl :: toPercentEncoding()を使おうとしました

QString encodedQueryString = QUrl::toPercentEncoding(queryStringParam);

その結果、"J1mOEfg%2FT"私が呼び出しているWebサービスは"J1mOEfg%2fT"['/'から'%20f'へのエンコードの小文字の'f'に注意]を期待しているため、パラメーターを拒否します。サービス側ではおそらく悪いですが、私はそれについて何もできません。パラメータの残りの部分で大文字と小文字を維持しながら、小文字のエンコード16進文字を取得するにはどうすればよいですか?

4

1 に答える 1

2

標準の関数ではできないと思いますが、簡単に自分で書くことができます。パーセントエンコードされた文字列では、特殊文字は%、16進数のペアが後に続く記号でエンコードされます。それを知っていると、次のような関数を書くことができます。

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;
}
于 2012-09-25T05:36:06.257 に答える