9

这是问题所在:Ruby 的 URI 库不处理变音符号;IE

irb> require "uri"
irb* URI("http://abc.de/äöü")
URI::InvalidURIError: bad URI(is not URI?): http://abc.de/äöü

我该如何处理?这是 Ruby 1.9.2,顺便说一句。

4

2 回答 2

14

解析前调用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'))
于 2013-05-26T14:53:08.160 回答
5

Addressable gem 是您想要用来处理 IRI 的。

于 2012-05-09T16:01:47.310 回答