QString из Punycode QUrl

Если я помещу URL-адрес http://www.äsdf.de/bla/bla в QUrl, как я могу восстановить URL-адрес с использованием исходных символов?

Это нормально, что QUrl исправит некоторые символы, но я хотел бы отображать исходный äsdf в URL-адресе вместо xn--sdf-pla.

Я знаю о QString QUrl::fromAce(const QByteArray &domain), но для этого требуется QByteArray вместо QUrl экземпляра.


person ilya    schedule 18.11.2016    source источник


Ответы (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);
person rgmt    schedule 18.11.2016
comment
Ваш образец работает нормально, но когда я использую другой URL-адрес с русскими символами привет.рф, тогда довольно печатается ошибка (все еще отображается Punycode ). Когда я использую привет.com, тогда все в порядке. Проверено на Qt 5.6.2. - person ilya; 18.11.2016