Spec-Zone.ru › JavaScript

decodeURI()

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

Функция decodeURI() декодирует Uniform Resource Identifier (URI), ранее созданный функцией encodeURI() или аналогичным методом.

Попробуйте

const uri = "https://mozilla.org/?x=шеллы";
const encoded = encodeURI(uri);
console.log(encoded);
// Expected output: "https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"

try {
  console.log(decodeURI(encoded));
  // Expected output: "https://mozilla.org/?x=шеллы"
} catch (e) {
  // Catches a malformed URI
  console.error(e);
}

Синтаксис

decodeURI(encodedURI)

Параметры

encodedURI
Полный, закодированный Uniform Resource Identifier.

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

Новая строка, представляющая незакодированную версию заданного закодированного Uniform Resource Identifier (URI).

Исключения

URIError
Выбрасывается, если encodedURI содержит %, за которым не следуют две шестнадцатеричные цифры, или если escape-последовательность не кодирует допустимый символ UTF-8.

Описание

decodeURI() — это свойство объекта global.

Функция decodeURI() декодирует URI, рассматривая каждую escape-последовательность в форме %XX как одну единицу кода UTF-8 (один байт). В UTF-8 количество ведущих 1-битов в первом байте, которое может быть 0 (для 1-байтовых ASCII символов), 2, 3 или 4, указывает количество байтов в символе. Таким образом, считывая первую escape-последовательность, decodeURI() может определить, сколько еще escape-последовательностей следует потребить. Если decodeURI() не удается найти ожидаемое количество последовательностей, или если escape-последовательности не кодируют допустимый символ UTF-8, выбрасывается URIError.

decodeURI() декодирует все escape-последовательности, но если escape-последовательность кодирует один из следующих символов, escape-последовательность сохраняется в выходной строке (поскольку они являются частью синтаксиса URI):

; / ? : @ & = + $ , #

Примеры

Декодирование URL с кириллицей

decodeURI(
  "https://developer.mozilla.org/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B",
);
// "https://developer.mozilla.org/ru/docs/JavaScript_шеллы"

decodeURI() против. decodeURIComponent()

decodeURI() предполагает, что входные данные являются полным URI, поэтому она не декодирует символы, которые являются частью синтаксиса URI.

decodeURI(
  "https://developer.mozilla.org/docs/JavaScript%3A%20a_scripting_language",
);
// "https://developer.mozilla.org/docs/JavaScript%3A a_scripting_language"

decodeURIComponent(
  "https://developer.mozilla.org/docs/JavaScript%3A%20a_scripting_language",
);
// "https://developer.mozilla.org/docs/JavaScript: a_scripting_language"

Обработка ошибок

try {
  const a = decodeURI("%E0%A4%A");
} catch (e) {
  console.error(e);
}

// URIError: malformed URI sequence

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

Спецификация
Спецификация языка ECMAScript® 2027
# sec-decodeuri-encodeduri

Совместимость с браузерами

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
decodeURI
1
12
1
7
1.1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0

См. также

  • decodeURIComponent()
  • encodeURI()
  • encodeURIComponent()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API