ruby URI.escape 和 URI.encode 和 URI.parse 错误

ruby URI.escape and URI.encode and URI.parse error

ruby 版本 2.2.2

url = "http://www.rugbyontario.com/AboutUs/NewsStories/LatestNews/tabid/15402/sni[20577]/4831/language/en-US/Default.aspx"
URI.parse(URI.encode(url))

这给出:

*** URI::InvalidURIError Exception: bad URI(is not URI?): http://www.rugbyontario.com/AboutUs/NewsStories/LatestNews/tabid/15402/sni[20577]/4831/language/en-US/Default.aspx

实际 url 在浏览器中工作,我已经在尝试逃避它,它仍然给我一个错误。有更好的方法吗?

我现在正在使用 addressable gem,在这种情况下,这个可以正确转义 url。

我必须承认我不太习惯阅读 RfC,但是,从我从 RfC3986 中了解到的情况来看,[] 在 URI 的路径组件中确实是非法的.所以,Ruby 是正确的:URI 无效。

您的浏览器接受它并不意味着什么。众所周知,浏览器会接受损坏的输入,以免惹恼非技术用户。