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

rad*_*iel 8 ruby unicode uri

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

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

我该怎么处理?这是Ruby 1.9.2,顺便说一句.

tok*_*and 13

在解析之前调用URI.encode:

require 'uri'
uri = URI(URI.encode("http://abc.de/äöü"))
Run Code Online (Sandbox Code Playgroud)

作为旁注,请注意,如果URL包含散列片段(#something),则必须手动拆分它:

require 'uri'
uri = URI(URI.encode('http://example.com/page.html') + '#' + URI.encode('anchor'))
Run Code Online (Sandbox Code Playgroud)


Sea*_*ean 5

寻址宝石是你想用对付虹膜什么。