考虑字符串:` ( ?
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?"
答案 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。