Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
完全等同于Javascript的Ruby';s escape()函数_Javascript_Ruby_Escaping - Fatal编程技术网

完全等同于Javascript的Ruby';s escape()函数

完全等同于Javascript的Ruby';s escape()函数,javascript,ruby,escaping,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("` ( ?") =&g

考虑字符串:
`(?

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?"

ERB::Util.url\u encode
将执行以下操作:

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

URI::encode
还需要一个正则表达式来匹配需要转义的不安全字符;您只需传递一个匹配任何字符的正则表达式:

URI.encode("` ( ?", /./) # => "%60%20%28%20%3F"
顺便说一下,从

escape和unescape函数对于非ASCII字符不能正常工作,已被弃用。在JavaScript 1.5及更高版本中,请使用encodeURI、decodeURI、encodeURIComponent和decodeURIComponent


Argh,但是
encodeURIComponent()
不编码
!为什么它比
escape()更可取
?根据Mozilla的说法,其中一个原因是它能正确处理非ASCII字符。但这对你来说又有什么关系呢?任何像样的解码功能都能处理这些结果。因为URL中的paren会破坏所有的东西(自动链接逻辑、标记逻辑等)另外,你的答案也太过分了——我不想对安全字符进行编码,而且
URI.encode((?hi),/。/)
=>
%60%20%28%20%3F%68%69”
不是javascript转义的精确副本——对冒号的处理方式不同