URL-кодирование

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Некоторые символы не могут быть частью URL-адреса (например, пробел), а некоторые другие символы имеют особое значение в URL-адресе. В формах HTML символ = используется для отделения имени от значения. Общий синтаксис URI использует кодировку URL для решения этой проблемы, в то время как HTML-формы делают некоторые дополнительные замены, а не применяют процентное кодирование для всех таких символов.

Например, пробелы в строке либо кодируются %20 , либо заменяются знаком плюс ( + ). Если вы используете символ вертикальной черты ( | ) в качестве разделителя, обязательно закодируйте вертикальную черту как %7C . Запятая в строке должна быть закодирована как %2C .

Рекомендуется использовать стандартные библиотеки построения URL-адресов вашей платформы для автоматического кодирования ваших URL-адресов, чтобы обеспечить правильное экранирование URL-адресов для вашей платформы.

Создание действительного URL-адреса

Вы можете подумать, что «действительный» URL-адрес самоочевиден, но это не совсем так. Например, URL-адрес, введенный в адресной строке браузера, может содержать специальные символы (например, "上海+中國" ); браузер должен внутренне перевести эти символы в другую кодировку перед передачей. Точно так же любой код, который генерирует или принимает ввод UTF-8, может рассматривать URL-адреса с символами UTF-8 как «действительные», но также должен переводить эти символы перед их отправкой на веб-сервер. Этот процесс называется URL-кодированием или процентным кодированием .

Специальные символы

Нам необходимо перевести специальные символы, поскольку все URL-адреса должны соответствовать синтаксису, указанному в спецификации универсального идентификатора ресурса (URI) . Фактически это означает, что URL-адреса должны содержать только специальное подмножество символов ASCII: знакомые буквенно-цифровые символы и некоторые зарезервированные символы для использования в качестве управляющих символов в URL-адресах. В этой таблице приведены эти символы:

Сводка допустимых символов URL
Установлен персонажи Использование URL
буквенно-цифровой abcdefghijklm nopqrstuvwxyz ABCDEFGHIJKLM NOPQRSTUVWXYZ 0 1 2 3 4 5 6 7 8 9 Текстовые строки, использование схемы ( http ), порт ( 8080 ) и т. д.
Незарезервировано - _ . ~ Текстовые строки
Сдержанный ! * ' ( ) ; : @ & = + $ , / ? % # [ ] Управляющие символы и/или текстовые строки

При создании допустимого URL-адреса необходимо убедиться, что он содержит только те символы, которые указаны в таблице «Сводка допустимых символов URL-адреса». Согласование URL-адреса с использованием этого набора символов обычно приводит к двум проблемам: пропуску и замене:

  • Символы, с которыми вы хотите работать, существуют за пределами указанного выше набора. Например, символы иностранных языков, такие как上海+中國, необходимо кодировать с использованием указанных выше символов. По популярному соглашению, пробелы (которые не допускаются в URL-адресах) часто также представляются с помощью символа плюс '+' .
  • Символы существуют в указанном выше наборе как зарезервированные символы, но их необходимо использовать буквально. Например, ? используется в URL-адресах для указания начала строки запроса; если вы хотите использовать строку «? и Мистерионы», вам нужно будет закодировать '?' персонаж.

Все символы, которые должны быть закодированы в URL-адресе, кодируются с использованием символа '%' и двухсимвольного шестнадцатеричного значения, соответствующего их символу UTF-8. Например,上海+中國в UTF-8 будет кодироваться URL как %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B . Строка ? and the Mysterians будут закодированы в URL как %3F+and+the+Mysterians или %3F%20and%20the%20Mysterians .

Общие символы, которые нуждаются в кодировании

Некоторые общие символы, которые должны быть закодированы:

Небезопасный персонаж Закодированное значение
Пространство %20
" %22
< %3C
> %3E
# %23
% %25
| %7C

Преобразование URL-адреса, который вы получаете от пользовательского ввода, иногда бывает сложной задачей. Например, пользователь может ввести адрес как «5th&Main St.» Как правило, вы должны создавать свой URL-адрес из его частей, рассматривая любой ввод пользователя как буквальные символы.

Кроме того, URL-адреса ограничены 8192 символами для всех веб-служб платформы Google Карт и статических веб-API. Для большинства служб это ограничение редко достигается. Однако обратите внимание, что у некоторых служб есть несколько параметров, которые могут привести к длинным URL-адресам.