Ruby 相当于 JavaScript 的 encodeURIComponent 产生相同的输出? [复制]

Posted

技术标签:

【中文标题】Ruby 相当于 JavaScript 的 encodeURIComponent 产生相同的输出? [复制]【英文标题】:Ruby equivalent to JavaScript’s encodeURIComponent that produces identical output? [duplicate] 【发布时间】:2011-02-20 22:46:07 【问题描述】:

嗨,有没有与 javascript encodeURIComponent 方法等效的 ruby​​ 方法?我正在使用URI.unescape(str),但它识别"£"(在encodeURIComponent 之后变为"%C2%A3")作为"?" 符号。任何解决方案?谢谢

【问题讨论】:

【参考方案1】:

我认为最简单的方法是URI.encode_www_form_component

【讨论】:

【参考方案2】:

CGI.escape 应该正确转义,除了空格被转义为+

请注意,URI.escape 在 Ruby 1.9.2 中已被弃用...

对于那些感兴趣的人,on ruby-core 进行了长时间的讨论。

【讨论】:

【参考方案3】:
URI.escape(foo, Regexp.new("[^#URI::PATTERN::UNRESERVED]"))

在这里找到:How do I raw URL encode/decode in JavaScript and Ruby to get the same values in both?

【讨论】:

可以说我有一个 str = "£" 我在 javascript 中使用 encodeURIComponent(str),但是当我在 ruby​​ 中使用 URI.unescape(str) 并且该字符串返回为 str = "? ”。所以有区别 URI.escape 已过时,不应使用。【参考方案4】:

URI.escape

【讨论】:

可以说我有一个 str = "£" 我在 javascript 中使用 encodeURIComponent(str),但是当我在 ruby​​ 中使用 URI.unescape(str) 并且该字符串返回为 str = "? ”。所以有区别。

以上是关于Ruby 相当于 JavaScript 的 encodeURIComponent 产生相同的输出? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript CryptoJS.enc.Base64 等效 C#

如何像在 Javascript 中一样在 Ruby 中动态创建对象及其方法?

Rails 5.2 credentials.yml.enc ERB 不解析

如何使用 Ruby 加密文件?

ruby 作为嵌入脚本时使用的注意事项

javascript和c#aes加密方法互解