2016-11-18 4 views
0

Si je mets l'URL http://www.äsdf.de/bla/bla dans QUrl, comment puis-je restaurer l'URL avec les symboles originaux?QString de Punycode QUrl

Il est normal que QUrl corrige certains caractères, mais je voudrais afficher l'original äsdf en url au lieu de xn--sdf-pla. Je suis au courant de QString QUrl::fromAce(const QByteArray &domain), mais il faut QByteArray au lieu de QUrl instance.

FYI: J'utilise C++ et Qt 5.5.1.

Répondre

1

Vous pouvez utiliser QUrl::toDisplayString avec la valeur par défaut PrettyDecoded option mise en forme, ou toute autre valeur entre enum ComponentFormattingOption:

QUrl url{"http://www.äsdf.de/bla/bla"}; 

QString original_string = 
    url.toDisplayString(); // default is QUrl::PrettyDecoded 

QString original_string_with_encoded_spaces = 
    url.toDisplayString(QUrl::EncodeSpaces); 
+0

Votre échantillon fonctionne très bien, mais quand j'utilise un autre URL avec des caractères russes « http: //привет.рф ", alors la jolie impression échoue (montre toujours Punycode). Quand j'utilise "http: //привет.com", alors ça va. Testé sur Qt 5.6.2. – ilya