2012-09-25 36 views
3

我有一個字符串,成爲url的查詢字符串部分,必須進行url編碼。QUrl toPercentEncoding()小寫十六進制

QString queryStringParam = "J1mOEfg/TC"; 

所以,我試圖用QUrl::toPercentEncoding()這樣

QString encodedQueryString = QUrl::toPercentEncoding(queryStringParam); 

導致"J1mOEfg%2FT"但我打電話的編碼期待"J1mOEfg%2fT" [注意小寫字母「F」'web服務/'到'%20f'],因此拒絕參數。這在服務方面可能很糟糕,但我無能爲力。如何在保持大小寫的其餘參數的情況下獲得小寫字母編碼十六進制字符?

回答

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