首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QUrl中的特殊字符将被转换为punycode

QUrl中的特殊字符将被转换为punycode
EN

Stack Overflow用户
提问于 2019-07-09 17:46:12
回答 1查看 102关注 0票数 0

我有一个文本字段,用户可以添加一个网址,我有一个文本字段,用户可以添加一个网址与QUrl::fromUserInput(),然后它将被放入一个列表。如果我在网址中使用特殊字符,如"http://blöd.de/",它将显示为"http://blöd.de/",但如果我只键入"ö",它将被转换为双关码"http://xn--nda/"

我试过每一个QUrl::FormattingOptions和每一个QUrl::ParsingMode

代码语言:javascript
复制
qDebug() << QUrl::fromUserInput("blöd.de"); // results in: http://blöd.de
qDebug() << QUrl::fromUserInput("ö");       // results in: http://xn--nda

有没有人知道怎么把这个punycode转换回特殊字符?为什么只有当我有一个顶级域名时,它才不会被转换?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-10 02:37:26

一些urls显示为Unicode字符,而其他urls显示为双关码的原因是为了防止同形异义词攻击。

决定如何对特定url执行操作的一种方法是通过TLD白名单。在Qt中,您可以使用QUrl::idnWhitelist()QUrl::setIdnWhitelist(const QStringList &list)查看和编辑白名单。

在您的示例中,.de在白名单中,但不在白名单中。这就是为什么你可以看到行为上的不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56949795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档