如何在JavaScript和Ruby中对原始URL进行编码/解码以获得相同的值?

我正在开发一个Web应用程序,我必须在JavaScript端编码和解码字符串以及代码的Ruby后端。 唯一的问题是JavaScript和Ruby的转义方法有很小的区别。 在JavaScript中, " "被视为"%20"但在ruby中, " "被编码为"+"

有办法解决这个问题吗? 在原始URL编码中编码字符串的另一种Ruby方法?

经过一些Selenium测试后,我注意到由于某种原因, URI.unescape"£""?"之间URI.unescape了 。 如果我使用encodeURIComponent("£"); 在JavaScript中,然后是URI.unescape("%C2%A3") ,这是我们编码"£"符号时得到的值,我得到"?" 签收了。 有解决方案吗

使用

 URI.escape(foo, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")) 

在ruby,和

 encodeURIComponent(foo); 

在javascript中

这两个行为都相同,并将空间编码为%20。

 require "uri"; puts URI.escape "1 2;", Regexp.new("[^0-9a-z\\-_.!~*'()]", "i");