EXACT Ruby相当于Javascript escape()函数

时间:2011-08-15 07:13:03

标签: javascript ruby escaping

考虑字符串:` ( ?

Javascript escape()对此进行编码:

escape("` ( ?")
"%60%20%28%20%3F"

如何在Ruby中实现相同的效果?我没有尝试过任何工作:

[Dev]> CGI.escape("` ( ?")
=> "%60+%28+%3F"
[Dev]> URI.encode("` ( ?")
=> "%60%20(%20?"
[Dev]> Addressable::URI.encode("` ( ?")
=> "%60%20(%20?"

2 个答案:

答案 0 :(得分:5)

ERB::Util.url_encode会这样做:

>> require 'erb'
=> true
>> ERB::Util.url_encode("` ( ?")
=> "%60%20%28%20%3F"

答案 1 :(得分:4)

URI::encode还会使用正则表达式来匹配需要转义的不安全字符;你可以传递匹配任何字符的正则表达式:

URI.encode("` ( ?", /./) # => "%60%20%28%20%3F"

顺便提一下,来自Mozilla Developer Network

  

对于非ASCII字符,escape和unescape函数无法正常工作,并且已弃用。在JavaScript 1.5及更高版本中,使用encodeURI,decodeURI,encodeURIComponent和decodeURIComponent。