我正在使用DMOZ的url 主题列表,其中包含一些具有包含下划线的主机名的 url。
例如:
608 <ExternalPage about="http://outer_heaven4.tripod.com/index2.htm">
609 <d:Title>The Outer Heaven</d:Title>
610 <d:Description>Information and image gallery of McFarlane's action figures for Trigun, Akira, Tenchi Muyo and other Japanese Sci-Fi animations.</d:Description>
611 <topic>Top/Arts/Animation/Anime/Collectibles/Models_and_Figures/Action_Figures</topic>
612 </ExternalPage>
虽然这个 url 可以在网络浏览器中使用(或者,至少在我的浏览器中可以使用:p),但根据标准,它是不合法的:
主机名不能包含其他字符,例如下划线字符 (_),
尝试解析此类 URL 时会导致错误URI.parse
:
[2] pry(main)> require 'uri'
=> true
[3] pry(main)> URI.parse "http://outer_heaven4.tripod.com/index2.htm"
URI::InvalidURIError: the scheme http does not accept registry part: outer_heaven4.tripod.com (or bad hostname?)
from ~/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/uri/generic.rb:213:in `initialize'
有没有替代URI.parse
我可以使用的具有较低严格性的替代方法,而不仅仅是自己滚动?