Ruby on rails ruby中的url转义

Ruby on rails ruby中的url转义,ruby-on-rails,ruby,escaping,Ruby On Rails,Ruby,Escaping,关于Ruby中的URL转义有很多讨论,但不幸的是,我没有找到合适的解决方案 通常,URI.escape应该可以完成这项工作,但它似乎不支持所有字符,例如,它不转义“[” 效果很好 URI.parse(URI.escape("1111[3333")) 引发了一个异常 我知道根据RFC,“[”在URL中不是一个合格的字符,但当我将它输入浏览器时,它会接受它,并呈现页面,因此我需要完全相同的行为 你知道用Ruby逃逸的现成解决方案吗?我通常使用 CGI.escape 转义URI参数 require

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

通常,
URI.escape
应该可以完成这项工作,但它似乎不支持所有字符,例如,它不转义“[”

效果很好

URI.parse(URI.escape("1111[3333"))
引发了一个异常

我知道根据RFC,“[”在URL中不是一个合格的字符,但当我将它输入浏览器时,它会接受它,并呈现页面,因此我需要完全相同的行为

你知道用Ruby逃逸的现成解决方案吗?

我通常使用

CGI.escape
转义URI参数

require 'cgi'. 

CGI.escape('1111[3333')
=> "1111%5B3333" 

字符[是uri分隔符字符,不需要转义


第2.4.3节。排除US-ASCII字符

谢谢,看起来它做了我需要的一切奇怪的是,CGI.escape('1111 3333')=“1111+3333”,应该是“1111%203333”,但实际上链接也与“+”一起工作
require 'cgi'. 

CGI.escape('1111[3333')
=> "1111%5B3333"