Подтвердить что ты не робот

Зачем вам нужно кодировать URL-адреса?

Зачем вам нужно кодировать URL-адреса? Есть ли веская причина, по которой вам нужно изменить каждое пространство в данных GET на %20?

4b9b3361

Ответ 1

Из RFC 2936, раздел 2.4.3:

Символ пробела исключается потому что значительные пробелы могут исчезнуть и незначительные пробелы могут быть введено, когда URI транскрибируются или набирать или подвергать обработка текстовой обработки программы. Пробелы также используются для разграничить URI во многих контекстах.

Ответ 2

Поскольку некоторые символы имеют особые значения.

Например, в строке запроса амперсанд (&) используется как разделитель между парами ключ-значение. Если бы вы ввели амперсанд в одно из этих значений, это будет выглядеть как разделитель между окончанием значения и началом следующего ключа. Поэтому для специальных символов, подобных этому, мы используем процентное кодирование, чтобы мы могли быть уверены, что данные однозначно закодированы.

Ответ 3

  • изначально старые браузеры могли путаться пробелами (на самом деле это не проблема).
  • теперь, если кто-то копирует URL-адрес для отправки в качестве ссылки - пространство может сломать гиперссылку - т.е.

Эй! Проверьте этот дергающий кот, играющий на пианино!

http://www.mysite.com/?video=funny cat plays piano.

Посмотрите, как разрыв ссылки?

Теперь посмотрим на это:

http://www.mysite.com/?video=funny%20cat%20plays%20piano.

Ответ 4

Хорошо, вы это делаете, потому что каждый браузер знает, как закодирована строка, составляющая URL. преобразование пространства в %20 и т.д. делает этот URL/URI переносимым. Это может быть латинский-1, он может быть unicode. Он нуждается в нормализации к чему-то, что понимается повсеместно. Взгляните на rfc3986 http://tools.ietf.org/html/rfc3986#section-2.1