Кодирование пробелов с помощью функции javascript encodeURIComponent - PullRequest
2 голосов
/ 19 сентября 2008

Почему функция JavaScript encodeURIComponent кодирует пробелы в шестнадцатеричное значение Unicode %20 вместо +. Должны ли параметры URI не вставляться в +?

Ответы [ 4 ]

4 голосов
/ 19 сентября 2008

Пробелы кодируются в% 20, я считаю, что это их код символа ASCII.

Однако разработчики обратили внимание на пробелы для кодирования +, поскольку он генерирует URL-адреса, которые могут быть прочитаны и набраны человеком.

2 голосов
/ 19 сентября 2008

+ не распознается как пробел во всех случаях использования URI, например, попробуйте использовать эту ссылку: -

MAILTO: парень @ где-то предмет = Hello World +

В строке темы все еще есть +, тогда как: -

MAILTO: парень @ где-то предмет = Hello% 20World

работает.

0 голосов
/ 20 октября 2009

Использование знака + в качестве пробела по историческим причинам. Тогда CGI позволил веб-серверам использовать обычные программы командной строки в качестве «веб-приложений». В мире сценариев программ командной строки большинство интерпретаторов / языков оболочки имели разделенные пробелами списки значений, такие как

items = (A beautiful world)
foreach( item in $items ) echo "* $item"

Вызвать такое «приложение для отображения списка» из командной строки:

render-list A beautiful world

Вызовите то же самое «приложение рендеринга списка» через http и веб-сервер:

http://testhost/cgi-bin/render-list?A+beautiful+world

Для большинства случаев использования значение знака + будет своего рода разделителем элементов или терминов в значении параметра. И это именно то место, где я рекомендую использовать его сегодня.

0 голосов
/ 19 сентября 2008

Как правило, пути к файлам должны иметь пробелы, закодированные как% 20. Параметры строки запроса должны иметь пробелы, закодированные как +.

Например: http://www.example.com/a%20file.ext?name=John+Doe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...