Ruby on rails Ruby URI::InvalidURIError:除了编码之外,还有错误的URI(不是URI?)

Ruby on rails Ruby URI::InvalidURIError:除了编码之外,还有错误的URI(不是URI?),ruby-on-rails,ruby,uri,Ruby On Rails,Ruby,Uri,我知道这是一个常见错误,我正在使用一个已知的解决方案,但它仍然给我相同的错误: require 'open-uri' url = "http://website.com/dirs/filex[a]" safeurl = URI.parse(URI.encode(url)) ... 给出URI::InvalidURIError:错误的URI(不是URI?): 我知道这是由[和]字符引起的。但是URI.encode没有做任何事情 我做错了什么?我想你的意思是要求uri,而不是开放uri。此外,您

我知道这是一个常见错误,我正在使用一个已知的解决方案,但它仍然给我相同的错误:

require 'open-uri'
url = "http://website.com/dirs/filex[a]"

safeurl = URI.parse(URI.encode(url))
...
给出
URI::InvalidURIError:错误的URI(不是URI?):

我知道这是由
[
]
字符引起的。但是URI.encode没有做任何事情


我做错了什么?

我想你的意思是要求uri,而不是开放uri。此外,您还可以指定第二个参数,其中包含要编码的额外字符。尝试在那里传递
[]

此解决方案的代码为:

safeurl = URI.parse(URI.encode(url, "[]"))

我也有同样的问题。我用这个方法解决了这个问题:

require 'cgi'
url = "http://website.com/dirs/filex[a]"

safeurl = URI.parse(CGI.escape(url).gsub("%3A", ":").gsub("%2F", "/"))

我没有要求uri,而是使用CGI类来转义无效字符,但CGI会转义所有字符,包括冒号和斜杠,所以在我使用gsub将它们取回后。

要求
uri
没有什么区别,但传递[]修复了它