如何在 JavaScript 和 Ruby 中对原始 URL 进行编码/解码以在两者中获得相同的值?
我正在开发一个 Web 应用程序,我必须在代码的 JavaScript 端和 Ruby 后端对字符串进行编码和解码。唯一的问题是 JavaScript 和 Ruby 的转义方法有一些细微的差别。在 JavaScript 中," "
被视为 "%20"
,但在 ruby 中," "
被编码为 "+".
有办法解决这个问题吗?另一种在原始 URL 编码中对字符串进行编码的 Ruby 方法?
经过一些 Selenium 测试后,我注意到由于某种原因 URI.unescape
在 "£"
和 "?"
之间混合了。如果我在 JavaScript 中使用 encodeURIComponent("£");
,然后在 Ruby 中使用 URI.unescape("%C2%A3")
,这就是我们编码时获得的值"£"
符号,我得到返回的 "?"
符号。有什么解决办法吗?
I am working on a web application where I have to encode and decode a string at the JavaScript side and Ruby backend of the code. the only problem is that the escape methods for JavaScript and Ruby have a small difference. in JavaScript the " "
is treated as "%20"
but in ruby the " "
is encoded to "+"
.
Any way to solve this? Another Ruby method to encode a string in raw URL encode?
After some Selenium testing I noticed that for some reason the URI.unescape
mixes up between the "£"
and the "?"
. If I use encodeURIComponent("£");
in JavaScript and then URI.unescape("%C2%A3")
in Ruby which is the value we get when we encode the "£"
sign, I get the "?"
sign returned. Any solution?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用
在 ruby 和
javascript 中
,这两者的行为相同,并将空格编码为 %20。
Use
in ruby, and
in javascript
Both these will behave equally and encode space as %20.
URI.escape 已弃用,替代方法是 ERB::Util.url_encode。
如果您在
.erb
文件中使用它,您可以执行以下操作:URI.escape was deprecated, an alternative is ERB::Util.url_encode.
If you are using it inside an
.erb
file you can do: