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 中动态创建对象及其方法?