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

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

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

decodeURI() сохраняет закодированные разделители адреса: ;/?:@&=+$,#. Например, %2F останется %2F. Чтобы декодировать отдельное значение полностью, используйте decodeURIComponent(). См. пример с разделителями и ошибками.

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

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

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

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

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

JavaScript синтаксис:

JavaScript
decodeURI(encodedURI);

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

ECMAScript — decodeURI().

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

decodeURI(): справочные сведения
Параметр Описание
encodedURI Закодированный Uniform Resource Identifier – унифицированный идентификатор ресурса.

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

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

Исключения

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

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

Как восстановить текст в адресе

Измените текст параметра q и сравните закодированный и восстановленный адрес.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
const uri = 'https://basicweb.ru/?q=справочник'
const encoded = encodeURI(uri) // кодируем URI
console.log(encoded) // "https://basicweb.ru/?q=%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA"

const decoded = decodeURI(encoded) // декодируем URI
console.log(decoded) // "https://basicweb.ru/?q=справочник"

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

Измените %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(decodeURI(text))
    } catch (error) {
        console.log(text, error.name)
    }
}