url在红宝石中逃脱

com*_*com 10 ruby escaping ruby-on-rails

关于Ruby中的URL转义有很多讨论,但遗憾的是我找不到合适的解决方案.

一般来说,URI.escape应该做的工作,但看起来它不支持所有字符,例如它不会逃避"[".

URI.parse(URI.escape("1111{3333"))  
Run Code Online (Sandbox Code Playgroud)

效果很好.

URI.parse(URI.escape("1111[3333"))
Run Code Online (Sandbox Code Playgroud)

提出异常.

据我所知,根据RFC,"["不是URL中符合条件的字符,但当我将其输入浏览器时,它会接受并呈现页面,因此我需要完全相同的行为.

知道在Ruby中逃避的任何现成解决方案吗?

ran*_*ser 16

我通常使用

CGI.escape
Run Code Online (Sandbox Code Playgroud)

转义URI参数.

require 'cgi'. 

CGI.escape('1111[3333')
=> "1111%5B3333" 
Run Code Online (Sandbox Code Playgroud)