开发者

How do I raw URL encode/decode in JavaScript and Ruby to get the same values in both?

开发者 https://www.devze.com 2022-12-30 02:11 出处:网络
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 ha

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 wh开发者_如何学运维ich is the value we get when we encode the "£" sign, I get the "?" sign returned. Any solution?


Use

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

in ruby, and

encodeURIComponent(foo); 

in javascript

Both these will behave equally and encode space as %20.


URI.escape was deprecated, an alternative is ERB::Util.url_encode.

ERB::Util.url_encode(foo)

If you are using it inside an .erb file you can do:

u(foo)


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

精彩评论

暂无评论...
验证码 换一张
取 消