2012-01-03 33 views
10

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

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

URI.parse(URI.escape("1111{3333")) 

效果很好。

URI.parse(URI.escape("1111[3333")) 

引发异常。

我明白“[”不是符合RFC的URL中的符合条件的字符,但是当我将它输入到浏览器中时,它将采用它并呈现页面,因此我需要完全相同的行为。

是否知道任何现成的解决方案在Ruby中转义?

回答

16

我通常使用

CGI.escape 

逃脱URI参数。

require 'cgi'. 

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

感谢,看起来像它做我需要的一切 – com 2012-01-03 09:32:51

+1

奇怪的是,CGI.escape('1111 3333')=“1111 + 3333”,这应该是“1111%203333”,但实际上链接作品也与“+” – com 2012-01-04 12:25:24