URIでアンダースコア含むホスト名がパースできない

かなり有名な問題らしい。

先代のRFC2396ではアンスコはNGだったけど、RFC3986はOKになっているはず。

最初に試したのは1.8.6 p114にて。

1.8.7 p17のNEWSで「Change for RFC3986」とあったので、ワーイと思ってたけど駄目だった・・

sogo:# ruby -v
ruby 1.8.7 (2008-06-09 patchlevel 17) [i686-linux]
sogo:# irb
irb(main):001:0> require 'uri'
=> true
irb(main):002:0> URI.parse("http://hoge_hoge.co.jp/?ad=a060306008")
URI::InvalidURIError: the scheme http does not accept registry part: hoge_hoge.co.jp (or bad hostname?)
        from /usr/local/lib/ruby/1.8/uri/generic.rb:195:in `initialize'
        from /usr/local/lib/ruby/1.8/uri/http.rb:78:in `initialize'
        from /usr/local/lib/ruby/1.8/uri/common.rb:488:in `new'
        from /usr/local/lib/ruby/1.8/uri/common.rb:488:in `parse'
        from (irb):2
        from :0


Why なぜに