Что такое кодировка URL:
URL-адрес должен быть закодирован, если в нем есть специальные символы. Например:
console.log(encodeURIComponent('?notEncoded=&+'));
В этом примере мы можем наблюдать, что все символы, кроме строки notEncoded
, кодируются со знаками%. Кодировка URL также известна как процентная кодировка , поскольку она экранирует все специальные символы с помощью%. Затем после этого знака% каждый специальный символ имеет уникальный код
Зачем нам нужна кодировка URL:
Некоторые символы имеют специальное значение в строке URL. Например,? символ обозначает начало строки запроса. Чтобы успешно найти ресурс в сети, необходимо различать, когда символ подразумевается как часть строки или часть структуры URL.
Как мы можем добиться кодирования URL в JS:
JS предлагает набор встроенных служебных функций, которые мы можем использовать для простого кодирования URL. Это два удобных варианта:
encodeURIComponent()
: принимает компонент URI в качестве аргумента и возвращает закодированную строку URI.
encodeURI()
: принимает URI в качестве аргумента и возвращает закодированную строку URI.
Пример и предостережения:
Помните, что не следует передавать весь URL (включая схему, например, https://) в encodeURIComponent()
. Это может фактически превратить его в неработающий URL. Например:
Мы можем заметить, что если поместить весь URL-адрес в encodeURIComponent
, то косые черты (/) также преобразуются в специальные символы. Это приведет к тому, что URL больше не будет работать должным образом.
Поэтому (как следует из названия) используйте:
encodeURIComponent
для определенной части URL, которую вы хотите закодировать.
encodeURI
на весь URL, который вы хотите закодировать.