Qt, QUrl, QUrlQuery: Mengkodekan karakter khusus dalam string kueri

Saya membuat kueri URL seperti ini:

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 = "[email protected]";    
QUrlQuery qurlqr;    
qurlqr.addQueryItem(normalize(key), normalize(value));

QString result = qurlqr.toString();

Hasil yang diharapkan adalah:

usermail=aemail%40gmail.com. 

Tapi saya menerima:

[email protected]

Saya tidak tahu kenapa. Bisakah kamu membantuku?

(Saya menggunakan Qt5 di Win7)


person aviit    schedule 10.05.2013    source sumber


Jawaban (1)


ToString QUrlQuery secara default menerjemahkan pengkodean persen. Jika Anda menginginkan versi yang disandikan, coba:

qurlqr.toString(QUrl::FullyEncoded)

Anda juga tidak perlu menyandikan string secara manual dengan mengganti karakter; Anda bisa menggunakan QUrl::toEncoded() (saya sarankan Anda membaca QUrlQuery dokumentasi).

person Sam    schedule 19.05.2013
comment
Namun hati-hati, toEncoded tidak akan berfungsi dengan tanda '+'. - person Étienne; 19.04.2016