Почему не decodeURI («a + b») == «ab»?

Я пытаюсь кодировать URL-адреса в Ruby и декодировать их с помощью 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"
21
задан Tom Lehman 26 December 2010 в 20:36
поделиться