Что такое кодировка URL
Кодирование URL-адреса, также называемое процентным кодированием, заменяет небезопасные символы в веб-адресе знаком процента, за которым следует код. Пробел становится %20, амперсанд становится %26 и так далее. Это позволяет вам помещать в URL-адрес любой текст, пробелы, диакритические знаки и символы, не нарушая его. Этот инструмент кодирует текст для безопасного использования в URL-адресах и декодирует текст в процентном кодировании обратно в читаемую форму.
Почему это необходимо
URL-адреса имеют ограниченный набор символов, которые они могут безопасно содержать. Когда вы помещаете поисковый запрос, значение параметра или сегмент пути, который включает пробелы, косые черты, вопросительные знаки или неанглийские буквы, непосредственно в URL-адрес, эти символы могут быть неправильно истолкованы и нарушить ссылку. Кодирование преобразует их в безопасное представление, которое серверы и браузеры правильно декодируют. Любой, кто программно создает строки запросов, вызовы API или ссылки, нуждается в этом постоянно.
Кодирование и декодирование
Кодирование берет читаемый текст и делает его безопасным для URL-адресов, что важно при создании ссылки или параметра запроса. Декодирование делает обратное, превращая строку, закодированную в процентах, обратно в читаемый текст, что полезно, когда вы читаете URL-адрес, который вам отправил кто-то, отлаживает вызов API или проверяет, что на самом деле содержит параметр. Этот инструмент выполняет оба действия одним щелчком мыши и правильно обрабатывает символы с диакритическими знаками и неанглийскими символами через UTF-8.
Распространенные ситуации
Создание URL-адреса поиска, в котором запрос содержит пробелы и символы. Передача значения, содержащего амперсанд или знак равенства, через параметр запроса без нарушения структуры URL-адреса. Чтение длинного закодированного URL-адреса, чтобы понять, на что он указывает. Создание запросов API, в которых необходимо закодировать параметры. Поскольку он запускается в вашем браузере, вы можете безопасно кодировать или декодировать значения, содержащие конфиденциальные данные.
Что такое кодировка URL
Кодирование URL-адреса, также называемое процентным кодированием, заменяет небезопасные или зарезервированные символы в URL-адресе знаком процента, за которым следуют две шестнадцатеричные цифры. Пробел становится %20, амперсанд становится %26 и так далее. URL-адреса ограничены небольшим набором символов ASCII по стандарту RFC 3986, поэтому все, что находится за пределами этого набора, пробелы, диакритические знаки, смайлики или зарезервированные символы, такие как ? & = # при использовании в качестве данных должен быть закодирован для передачи от браузера к серверу без нарушения структуры URL-адреса.
encodeURI против encodeURIComponent
JavaScript предлагает две функции кодирования, и неправильный выбор — распространенная ошибка. encodeURIComponent кодирует все зарезервированное и является тем, что вам нужно для отдельных значений, которые вы вводите в строку запроса, условия поиска, значения параметра и цели перенаправления. encodeURI сохраняет символы структуры URL, такие как / ? & = и предназначен для кодирования всего URL-адреса, сохраняя при этом его работоспособность. Эмпирическое правило: используйте encodeURIComponent для значений внутри URL-адреса и encodeURI только для всего URL-адреса. Этот инструмент кодирует компоненты, что вам нужно большую часть времени.
Распространенные ошибки кодирования URL-адресов
Доминируют две ошибки. Двойное кодирование происходит, когда вы кодируете уже закодированную строку, %20 становится %2520, что разрывает ссылку; кодируйте только необработанный текст, а не уже закодированный URL-адрес, и сначала декодируйте, если вы не уверены. Другой — это неоднозначность знака плюс: в строке запроса + может означать пробел (из кодировки HTML-формы), но в пути URL-адреса это буквальный плюс. В случае сомнений используйте %20 для пробела, который везде однозначен. Также помните, что незакодированный символ & внутри значения будет ошибочно воспринят как разделитель параметров, что приведет к разделению ваших данных.