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)

また、文字を置き換えて文字列を手動でエンコードする必要はありません。代わりに使用することもできます( QUrlQueryQUrl::toEncoded()のドキュメントを読むことをお勧めします)。

于 2013-05-19T14:49:16.897 に答える