Ruby中是否有与JavaScript的encodeURIComponent产生相同输出的等效方法?

24

你好,有没有与JavaScript的encodeURIComponent方法相对应的Ruby方法?我正在使用 URI.unescape(str),但是它将 "£"(在encodeURIComponent之后变成"%C2%A3")识别为"?"号。有什么解决办法吗?谢谢。

4个回答

31

假设我有一个字符串 str = "£",我在 JavaScript 中使用 encodeURIComponent(str),但是当我在 Ruby 中使用 URI.unescape(str) 时,该字符串返回为 str = "?"。因此存在差异。 - Mo.
2
URI.escape已经过时,不应再使用。 - Michiel de Mare
@MichieldeMare,应该使用什么? - Brendon Muir
1
@BrendonMuir 我不是你问的那个人,但是为了回答你的问题,可以使用 ERB::Util.url_encode 或者 CGI.escape,尽管这两种解决方案都不完美。 - presentformyfriends

12

CGI.escape 应正确转义,但空格会被转义成 +

需要注意的是,在 Ruby 1.9.2 中,URI.escape 已过时...

对于有兴趣的人,可以在 ruby-core 上找到有关此问题的长时间讨论。


12

-1

1
假设我有一个字符串 str = "£",我在 JavaScript 中使用 encodeURIComponent(str),但是当我在 Ruby 中使用 URI.unescape(str) 时,该字符串返回为 str = "?"。因此存在差异。 - Mo.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接