問題は次のとおりです。RubyのURIライブラリはウムラウトを処理しません。すなわち
irb> require "uri"
irb* URI("http://abc.de/äöü")
URI::InvalidURIError: bad URI(is not URI?): http://abc.de/äöü
どうすればそれに対処できますか?これはRuby1.9.2です。
解析する前にURI.encodeを呼び出します。
require 'uri'
uri = URI(URI.encode("http://abc.de/äöü"))
補足として、URLにハッシュフラグメント( #something)が含まれている場合は、手動で分割する必要があることに注意してください。
require 'uri'
uri = URI(URI.encode('http://example.com/page.html') + '#' + URI.encode('anchor'))
アドレス可能なgemは、IRIを処理するために使用したいものです。