Глобальная функция JavaScript decodeURIComponent()

Определение и применение

Глобальная функция JavaScript decodeURIComponent() декодирует управляющие последовательности символов в компоненте URI (англ. Uniform Resource Identifier – унифицированный идентификатор ресурса), ранее созданный encodeURIComponent(), или другим подобным способом.

decodeURIComponent() декодирует и разделители, например %2F в / и %26 в &. Применяйте её к отдельному значению, а не к целому адресу, чтобы не превратить закодированные данные в разделители. См. пример с разделителями и ошибками.

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.decodeURIComponent
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
decodeURIComponent✓1✓12✓1✓7✓1.1✓18✓4✓10.1✓1✓1.0✓4.4✓1

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис:

JavaScript
decodeURIComponent(encodedURI);

Спецификация

ECMAScript — decodeURIComponent().

Значения параметров

decodeURIComponent(): справочные сведения
Параметр Описание
encodedURI Строковое значение, содержащее закодированный компонент Uniform Resource Identifier.

Возвращаемое значение

Новая строка с декодированным текстом. Исходная строка не изменяется. Перед обработкой аргумент преобразуется в строку; например, число 123 станет "123".

Исключения

decodeURIComponent(): справочные сведения
Тип исключения Описание
URIError Возникает при неполной или неверной последовательности после %, например "%" или "%ZZ", либо при байтах, не образующих корректный UTF-8, например "%D0".
TypeError Возникает при передаче Symbol (символьного значения) или другого значения, которое невозможно преобразовать в строку.

Примеры, попробуйте сами

Как восстановить значение параметра

Измените закодированное значение и сравните его с исходным текстом.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
const value = 'чай & кофе #1'
const encoded = encodeURIComponent(value)
console.log(encoded) // %D1%87%D0%B0%D0%B9%20%26%20%D0%BA%D0%BE%D1%84%D0%B5%20%231
console.log('https://basicweb.ru/?q=' + encoded)
console.log(decodeURIComponent(encoded)) // чай & кофе #1

Как декодируются разделители и ошибочные строки

Измените %2F или %26 и сравните функции. Затем исправьте строку с неполным кодом символа.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
for (const text of ['%2F%3F%26%23', 'a+b', '%D1%8F']) {
    console.log(text, decodeURI(text), decodeURIComponent(text))
}
// Неполный процентный код и оборванный UTF-8 вызывают URIError.
for (const text of ['%', '%ZZ', '%D0']) {
    try {
        console.log(decodeURIComponent(text))
    } catch (error) {
        console.log(text, error.name)
    }
}