JavaScript | encodeURI (), decodeURI () и его компоненты функции

Опубликовано: 4 Декабря, 2021

Кодирование и декодирование компонентов URI и URI - обычная задача в веб-разработке при выполнении запроса GET к API с параметрами запроса. Часто создавайте строку URL-адреса с параметрами запроса, и для ее понимания серверу ответа необходимо декодировать этот URL-адрес. Браузеры автоматически кодируют URL-адрес, т.е. он преобразует некоторые специальные символы в другие зарезервированные символы, а затем выполняет запрос. Например: пробел «» преобразуется либо в +, либо в% 20.

Пример:

  • Откройте www.google.com и введите поисковый запрос «Компьютерщики для компьютерных фанатов».
  • После появления результатов поиска обратите внимание на адресную строку браузера. URL-адрес браузера будет содержать знак% 20 или + вместо пробела.
  • URL будет выглядеть так: https://www.google.com/search?q=geeks%20for%20geeks или https://www.google.com/search?q=geeks+for+geeks.

Примечание. Браузер автоматически преобразовал пробелы в знак + или% 20.

Есть много других специальных символов, и преобразовывать каждый из них жестким кодом будет утомительно. JavaScript предоставляет следующие функции для выполнения этой задачи:

encodeURI ()

Функция encodeURI () используется для кодирования полного URI. Эта функция кодирует специальный символ, кроме символов (, /?: @ & = + $ #).

Синтаксис:

 encodeURI (complete_uri_string)

Параметры: эта функция принимает единственный параметр complete_uri_string, который используется для хранения URL-адреса, который будет закодирован.

Возвращаемое значение: эта функция возвращает закодированный URI.

Пример:

<script>
const url = " https://www.google.com/search?q=geeks for geeks" ;
const encodedURL = encodeURI(url);
document.write(encodedURL)
</script>

Выход:

 https://www.google.com/search?q=geeks%20for%20geeks

encodeURIComponent ()

Функция encodeURIComponent () используется для кодирования некоторых частей или компонентов URI. Эта функция кодирует специальные символы. Кроме того, он кодирует следующие символы:, /? : @ & = + $ #

Синтаксис:

 encodeURIComponent (uri_string_component)

Параметры:: Эта функция принимает единственный параметр uri_string_component, который используется для хранения строки, которую необходимо закодировать.

Возвращаемое значение: эта функция возвращает закодированную строку.

Пример:

<script>
const component = "geeks for geeks"
const encodedComponent = encodeURIComponent(component);
document.write(encodedComponent)
</script>

Выход:

 вундеркинды% 20 на% 20 гики

декодирует ()

Функция decodeURI () используется для декодирования URI, сгенерированного encodeURI ().

Синтаксис:

 decodeURI (complete_encoded_uri_string)

Параметры: эта функция принимает единственный параметр complete_encoded_uri_string, который содержит закодированную строку.

Возвращаемое значение: эта функция возвращает декодированную строку (исходную строку).

Пример:

<script>
const decodedURL = decodeURI(url);
document.write(decodedURL)
</script>

Выход:

 https://www.google.com/search?q=geeks для компьютерных фанатов

decodeURIComponent ()

Функция decodeURIComponent () используется для декодирования некоторых частей или компонентов URI, сгенерированных encodeURIComponent ().

Синтаксис:

 decodeURIComponent (encoded_uri_string_component)

Параметры: эта функция принимает один параметр encoded_uri_string_component, который содержит закодированную строку.

Возвращаемое значение: эта функция возвращает декодированный компонент строки URI.

Пример:

<script>
const component = "geeks%20for%20geeks"
const decodedComponent = decodeURIComponent(component);
document.write(decodedComponent)
</script>

Выход:

 вундеркинды для вундеркиндов

Приложения:

  • Чтобы правильно преобразовать параметры запроса, разделенные пробелами, предоставленные API.
  • В веб-парсинге для декодирования параметров запроса URL для извлечения удобочитаемых строк.