如何将umlauts与ruby的URI库一起使用

时间:2012-05-09 15:51:24

标签: ruby unicode uri

问题在于:Ruby的URI库不处理变音符号;即。

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

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

2 个答案:

答案 0 :(得分:13)

在解析之前调用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'))

答案 1 :(得分:4)

Addressable gem就是你想用来处理IRI的东西。