2010-01-19 42 views
0

今天我發現在Qt 4.6中,如果主機名包含下劃線,QUrl就不會解析url。QUrl不解析帶下劃線的主機名

據我所知,根據標準,下劃線是不允許在域名中,但是,有一些網址有下劃線,特別是對於某些子域。

例如,我碰到這種飼料的網址:

http://hero_hki.mysinablog.com/rss.php

和QUrl( 「http://hero_hki.mysinablog.com/rss.php」)的ToString()返回 「HTTP:/rss.php」

Firefox和谷歌無論如何,Chrome都可以訪問此頁面。

(我使用Qt 4.6 TP1測試。不是很確定這個問題是否是固定的釋放,因爲我沒有時間來編譯我的筆記本電腦的發行版開發我的玩具feed閱讀器。)

有什麼建議?謝謝:)

+0

測試它與Qt 4.6.0版本和輸出是相同的。但是,Qt 4.3.4會正確輸出URL。 – Job 2010-01-19 08:43:13

回答

1

我讀了Qt 4.6.0 changelog如下:

QUrl的解析器更爲嚴格在URL中主機名時。 QUrl現在強制STD 3個規則:

  • 每個單獨的主機名部分(點之間)必須在長度最 63個ASCII字符;

  • 只有字母,數字和連字符允許在 ASCII範圍內; ASCII範圍之外的字母按照正常 IDN規則

這意味着QUrl不再接受網址有些是無效的 過,但並沒有作如此解釋。

+0

沒有注意到此更改日誌。可以理解遵循規則。我甚至感到驚訝的是沒有其他應用程序遵循這種嚴格的方式是的,mysinablog是不專業的,以允許這個子域名,現在是我的頭痛。 – Cooy 2010-01-19 18:56:56