我正在开发一个Web应用程序,我必须在JavaScript端编码和解码字符串以及代码的Ruby后端。唯一的问题是JavaScript和Ruby的转义方法有很小的区别。在JavaScript中," "
被视为"%20"
,但在红宝石中," "
被编码为"+"
。
有什么方法可以解决这个问题?另一个在原始URL编码中编码字符串的Ruby方法?
经过一些Selenium测试后,我注意到由于某种原因,URI.unescape
和"£"
之间的混合"?"
。如果我在JavaScript中使用encodeURIComponent("£");
,然后在Ruby中使用URI.unescape("%C2%A3")
,这是我们在编码"£"
符号时获得的值,我会返回"?"
符号。任何解决方案?
答案 0 :(得分:31)
使用
URI.escape(foo, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
在ruby中,
encodeURIComponent(foo);
在javascript中
这两个行为都相同,并将空间编码为%20。
答案 1 :(得分:1)
答案 2 :(得分:-1)
require "uri";
puts URI.escape "1 2;", Regexp.new("[^0-9a-z\\-_.!~*'()]", "i");