今天我发现在Qt 4.6中,如果主机名包含下划线,则QUrl不会解析URL。
据我所知,根据标准,域名中不允许使用下划线,但是,有一些带下划线的URL,特别是某些子域名。
例如,我遇到了这个Feed的网址:
http://hero_hki.mysinablog.com/rss.php
和QUrl(“http://hero_hki.mysinablog.com/rss.php”)。toString()返回“http:/rss.php”
Firefox和Google Chrome无论如何都可以访问此页面。
(我用Qt 4.6 tp1测试过。不太确定这个问题是否在发布中得到修复,因为我没有时间在我的笔记本电脑上编译发布版本来开发我的玩具提要阅读器。)
有什么建议吗?谢谢:))
答案 0 :(得分:1)
我从Qt 4.6.0 changelog阅读了以下内容:
对于URL中的主机名,QUrl的解析器更严格。 QUrl现在执行STD 3规则:
每个主机名部分(点之间)必须最多 63个ASCII字符长度;
只允许使用字母,数字和连字符 ASCII范围; ASCII范围之外的字母遵循法线 IDN规则
这意味着QUrl不再接受某些无效的网址 之前,但没有被解释为这样。