与 Javascript 的 escape() 函数完全相同的 Ruby 等价物

发布于 2024-11-29 11:03:12 字数 381 浏览 1 评论 0原文

考虑一下字符串: ` ( ?

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

Consider the string: ` ( ?

Javascript's escape() encodes it like this:

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

How can I achieve the same effect in Ruby? Nothing I try works:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我纯我任性 2024-12-06 11:03:12

ERB::Util.url_encode 会做到这一点:

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

ERB::Util.url_encode will do it:

>> require 'erb'
=> true
>> ERB::Util.url_encode("` ( ?")
=> "%60%20%28%20%3F"
凉宸 2024-12-06 11:03:12

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

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

顺便说一下,来自 Mozilla 开发者网络

转义和取消转义函数对于非 ASCII 字符无法正常工作,已被弃用。在 JavaScript 1.5 及更高版本中,使用encodeURI、decodeURI、encodeURIComponent 和decodeURIComponent。

URI::encode also takes a regex to match unsafe characters which need to be escaped; you can just pass a regex matching any character:

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

By the way, from the Mozilla Developer Network:

The escape and unescape functions do not work properly for non-ASCII characters and have been deprecated. In JavaScript 1.5 and later, use encodeURI, decodeURI, encodeURIComponent, and decodeURIComponent.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文