如何在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");