2016-11-18 45 views
0

如果我把url http://www.äsdf.de/bla/bla改成QUrl,那我该如何用原始符号恢复url?Punycode的QString QUrl

没关系QUrl会修复一些字符,但我想在url中显示原始äsdf而不是xn--sdf-pla

我知道的QString QUrl::fromAce(const QByteArray &domain),但它需要QByteArray而不是QUrl实例。

供参考:我使用C++和Qt 5.5.1。

回答

1

您可以使用QUrl::toDisplayString使用默认PrettyDecoded格式选项,或任何其他值之间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

你的样品工作正常,但是当我使用另一个URL带俄语字符的“http://привет.рф “,然后漂亮的打印失败(仍然显示Punycode)。当我使用“http://привет.com”时,那就没关系。在Qt 5.6.2上测试。 – ilya