我正在尝试在 Ruby 中对 URL 进行编码并使用 Javascript 对其进行解码。但是,加号给了我奇怪的行为。
在 ruby 中:
[Dev]> CGI.escape "a b"
=> "a+b"
[Dev]> CGI.unescape "a+b"
=> "a b"
到目前为止一切顺利。但是 Javascript 呢?
>>> encodeURI("a b")
"a%20b"
>>> decodeURI("a+b")
"a+b"
基本上我需要一种编码/解码 URL 的方法,它在 Javascript 和 Ruby 中的工作方式相同。
编辑 decodeURIComponent
也好不到哪里去:
>>> encodeURIComponent("a b")
"a%20b"
>>> decodeURIComponent("a+b")
"a+b"
最佳答案
+
不被视为空格。一种解决方法是将 +
替换为 %20
,然后调用 decodeURIComponent
取自 php.js' urldecode :
decodeURIComponent((str+'').replace(/\+/g, '%20'));
关于javascript - 为什么不 decodeURI ("a+b") == "a b"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4535288/