Знак
+
имеет семантическое значение в строке запроса.Он используется для представления пространства.Другим символом, имеющим семантическое значение в строке запроса, является &
, который используется для разделения различных пар var=value
в строке запроса.
Большинство сценариев на стороне сервера декодируют параметры запроса перед их использованием, поэтомучто +
правильно конвертируется в пробел.Теперь, если вы хотите, чтобы в строке запроса присутствовал литерал +
, вам нужно указать вместо него %2B
.
+
знак в строке запроса URL-декодируется в пробел.%2B
в строке запроса URL-декодируется со знаком +.
См. Разницу между
http://www.google.com/search?q=foo+bar
и
http://www.google.com/search?q=foo%2Bbar
В приведенных выше примерах серверный скрипт Google выполняет URL-декодирование параметров запроса и затем использует их для поиска.
URL-кодировка - не что иное, как знак %
, за которым следует знакшестнадцатеричный код специального символа.Например, мы знаем, что шестнадцатеричный код A
равен 0x41 (десятичное число: 65).Попробуйте это:
http://www.google.com/search?q=%41
Надеюсь, что это делает кодировку URL понятной.
Итак, если вы хотите, чтобы знак +
сохранялся при извлечении JavaScriptURL-адрес со знаком +
в его параметрах запроса и сценарий на стороне сервера будет обрабатывать параметры запроса после его декодирования URL-адресом; необходимо выполнить URL-кодирование параметров запроса в URL-адресе перед использованием запроса HTTP get, чтобы все * 1038Знаки * преобразуются в %2B
, когда запрос достигает сценария на стороне сервера.Теперь, когда серверный скрипт URL-декодирует строку запроса, все %2B
преобразуются обратно в +
знаки, что вам нужно.
См. Кодирование URL в JavaScript? чтобы узнать, как URL-кодировать параметры с помощью JavaScript.Краткий ответ из обсуждения там:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);