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 なぜに