【问题标题】:QString from Punycode QUrl来自 Punycode QUrl 的 QString
【发布时间】:2016-11-18 12:03:14
【问题描述】:

如果我将 url http://www.äsdf.de/bla/bla 放入 QUrl 中,我该如何恢复带有原始符号的 url?

QUrl 可以修复一些字符,但我想在 url 中显示原始的 äsdf 而不是 xn--sdf-pla

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

【问题讨论】:

    标签: c++ qt qt5 punycode qurl


    【解决方案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);
    

    【讨论】:

    • 您的示例工作正常,但是当我使用另一个带有俄语字符“привет.рф”的 url 时,漂亮的打印失败(仍然显示 Punycode)。当我使用“привет.com”时,就可以了。在 Qt 5.6.2 上测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多