问题在于:Ruby的URI库无法处理umlauts(德语中的元音字母加上两个小圆点),即:
irb> require "uri"
irb* URI("http://abc.de/äöü")
URI::InvalidURIError: bad URI(is not URI?): http://abc.de/äöü
我该如何处理这个问题?顺便说一下,这是 Ruby 1.9.2 版本。
问题在于:Ruby的URI库无法处理umlauts(德语中的元音字母加上两个小圆点),即:
irb> require "uri"
irb* URI("http://abc.de/äöü")
URI::InvalidURIError: bad URI(is not URI?): http://abc.de/äöü
我该如何处理这个问题?顺便说一下,这是 Ruby 1.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'))
你需要使用Addressable宝石来处理IRI。