Problem with QUrlQuery::toString(QUrl::FullyEncoded) (.toUtf8()) ,with character '+'



  • Hi,
    I have the following code :

    QUrlQuery postData;
    
    ....
    postData.addQueryItem("objet",objet);
    
    postData.addQueryItem("message",message);
    
    QByteArray b=postdata.toString(QUrl::FullyEncoded) .toUtf8(); 
    m_reponse = m_pNetManager->post(requete,  postData.toString(QUrl::FullyEncoded).toUtf8());
    

    When objet or message contains the character '+' ,the variable b contains this character not encoded (not as %) and the webservices php (api rest) receive a space character instead of '+'.I think that postData.toString(QUrl::FullyEncoded) has a bug because the character '+' must be encoded like '%n'....



  • I have fixed it with

    objet.replace(QChar('+'),QString("%2B"));
    message.replace(QChar('+'),QString("%2B"));
    
    postData.addQueryItem("objet",objet);
    
    postData.addQueryItem("message",message);
    
    

    but it 'is a bug of the method QUrlQuery::toString(QUrl::FullyEncoded),that should encode the character '+' as "%2B"...
    my problem is solved.



  • Hi! This bug has been reported as QTBUG-50001.



  • OK thanks Wieland,
    I had this problem with version Qt 5.3.2 compiled from sources for windows, with 5.4.1 for linux and with 5.4.2 for MacOSX.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.