JS метод Global.decodeURIComponent()
Загальний опис
decodeURIComponent()
є вбудованим методом JavaScript, призначеним для декодування компонентів URI, які були раніше закодовані за допомогою encodeURIComponent()
. Цей метод надзвичайно корисний, коли потрібно працювати з URI, що містять спеціальні символи, такі як знаки питання, амперсанди чи пробіли, які були закодовані для безпечної передачі через мережу.
Та навіщо нам взагалі потрібно декодувати URI? У світі веб-розробки, де інформація постійно передається між серверами та клієнтами, безпека та читабельність даних мають вирішальне значення. Метод decodeURIComponent()
дозволяє нам перетворити закодовані компоненти URI назад у їхній зрозумілий і читабельний формат.
Розглянемо практичний приклад. Припустимо, у нас є такий закодований URI: `"Hello%20World!"
. Використовуючи decodeURIComponent()
, ми отримаємо рядок "Hello World!".
let encoded = "Hello%20World!";
let decoded = decodeURIComponent(encoded);
console.log(decoded); // Виводить "Hello World!"
Тепер розглянемо, де та як можна використовувати decodeURIComponent()
. Цей метод особливо корисний при розробці веб-застосунків, де дані часто передаються через URL-адресу в якості параметрів запиту. Наприклад, якщо користувач хоче передати текстову фразу "Моя книга" через URL, фраза повинна бути спершу закодована, а потім передана. При отриманні такої інформації з URL, розробнику потрібно буде використовувати decodeURIComponent()
для того, щоб правильно обробити та відобразити цю інформацію.
Основні особливості decodeURIComponent()
включають здатність обробляти всі символи, закодовані методом encodeURIComponent()
. Це означає, що навіть якщо ваш рядок містить ряд спеціальних символів, таких як знаки долара, крапки, пробіли або будь-який інший спеціальний символ, вони будуть правильно декодовані.
Однак важливо відзначити, що decodeURIComponent()
відрізняється від decodeURI()
. Останній декодує URI, але не буде декодувати спеціальні символи, такі як :
, /
, ?
та #
, тоді як decodeURIComponent()
декодує їх.
Нотатка: | Перш ніж використовувати
|
Нотатка: | Для початківців може бути просто сплутати |
Порада: | Якщо у вас є URL із численними параметрами, розгляньте можливість використання циклів або інших ітеративних методів для автоматичного декодування кожного параметра. Це особливо корисно при роботі з динамічно генерованими URL або при отриманні даних з третіх джерел.
|
Синтаксис
decodeURIComponent(encodedURI)
Параметри
- *
encodedURI
Цей параметр представляє частину URI, яка була закодована за допомогою методу
encodeURIComponent()
або аналогічної процедури кодування. МетодdecodeURIComponent()
буде намагатися перетворити цей закодований рядок назад у його вихідний, незакодований вигляд.
Return
string
Повертає новий рядок, який представляє декодовану версію заданого закодованого компоненту Уніфікованого Ідентифікатора Ресурсу (URI).
Exception
URIError: Виникає, коли encodedURI
містить символ %, за яким не слідують дві шістнадцяткові цифри, або коли екранована послідовність не кодує дійсний символ UTF-8.
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
1 |
1.1 |
7 |
12 |
Переглядач | ||||
---|---|---|---|---|
4.4 |
18 |
4 |
1 |
Переглядач | ||
---|---|---|
0.10.0 |
1.0 |
Приклади
Коли користувач введе закодований URI компонент і натисне кнопку "Декодувати", він побачить розкодований результат в спеціальному розділі на сторінці.
У цьому прикладі ми маємо URL, який містить закодовані параметри запиту. Наприклад, ім'я "John Doe" було закодовано як "John%20Doe". Функція getDecodedParams
приймає такий URL як вхід і використовує decodeURIComponent()
для декодування значень параметрів. Потім вона повертає об'єкт з декодованими значеннями параметрів.
// Задано URL з параметрами запиту, які були закодовані
let encodedURL = "https://example.com/?name=John%20Doe&age=30";
// Функція для отримання та декодування параметрів з URL
function getDecodedParams(url) {
let params = new URLSearchParams(url.split('?')[1]);
let result = {};
for (let [key, value] of params.entries()) {
result[key] = decodeURIComponent(value);
}
return result;
}
let decodedParams = getDecodedParams(encodedURL);
console.log(decodedParams); // { name: "John Doe", age: "30" }
Метод decodeURIComponent()
може викидати помилку, якщо намагатися декодувати рядок, який містить недійсне кодування. У цьому прикладі ми спробували декодувати рядок "This%20is%20a%20test%G", який містить неправильне кодування "%G". Коли ми спробували декодувати цей рядок, ми отримали помилку. Для обробки таких помилок ми використовуємо конструкцію try-catch
, щоб вивести повідомлення про помилку і запобігти аварійному завершенню програми.
// Задано потенційно закодований рядок
let potentiallyEncodedString = "This%20is%20a%20test%G";
try {
let decodedString = decodeURIComponent(potentiallyEncodedString);
console.log(decodedString);
} catch (error) {
console.error("Помилка при декодуванні рядка: ", error.message);
}