このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

decodeURI()

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。

decodeURI() 関数は、encodeURI() 関数あるいは同様のルーチンによって事前に作成された URI (Uniform Resource Identifier; 統一資源識別子) をデコードします。

試してみましょう

const uri = "https://mozilla.org/?x=шеллы";
const encoded = encodeURI(uri);
console.log(encoded);
// 予想される結果: "https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"

try {
  console.log(decodeURI(encoded));
  // 予想される結果: "https://mozilla.org/?x=шеллы"
} catch (e) {
  // 正しくない形の URI を捕捉
  console.error(e);
}

構文

js
decodeURI(encodedURI)

引数

encodedURI

完全にエンコードされた URI。

返値

与えられたエンコードされた統一資源識別子 (URI) のエンコードされていないバージョンを表す新しい文字列。

例外

URIError

encodedURI に 2 桁の 16 進数字が続かない % が含まれている場合、またはエスケープシーケンスが有効な UTF-8 文字をエンコードしていない場合に発生します。

解説

decodeURI() は、グローバルオブジェクトの関数プロパティです。

decodeURI() 関数は、 %XX という形のエスケープシーケンスを 1 つの UTF-8 コード単位(1 バイト)として扱い、 URI をデコードします。 UTF-8 では、最初のバイトの先頭にある 1 ビットの数は、 0 (1 バイトの ASCII 文字の場合)になることがあり、2、3、4 ビット目は、文字のバイト数を示します。したがって、最初のエスケープシーケンスを読み込むことで、 decodeURI() は、さらに消費すべきエスケープシーケンスの数を決定することができます。 decodeURI() が予想した数のシーケンスを見つけられなかった場合、またはエスケープシーケンスが有効な UTF-8 文字をエンコードしていない場合、 URIError が発生します。

decodeURI() はすべてのエスケープシーケンスをデコードしますが、エスケープシーケンスが次の文字のいずれかをエンコードしている場合、そのエスケープシーケンスは出力文字列に保持されます(これらは URI 構文の一部であるため)。

; / ? : @ & = + $ , #

キリル文字の URL をデコード

js
decodeURI(
  "https://mdn.go-mizu.dev/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B",
);
// "https://mdn.go-mizu.dev/ru/docs/JavaScript_шеллы"

decodeURI() と decodeURIComponent()

decodeURI() は、入力が完全な URI であると仮定するため、URI 構文の一部である文字はデコードしません。

js
decodeURI(
  "https://mdn.go-mizu.dev/docs/JavaScript%3A%20a_scripting_language",
);
// "https://mdn.go-mizu.dev/docs/JavaScript%3A a_scripting_language"

decodeURIComponent(
  "https://mdn.go-mizu.dev/docs/JavaScript%3A%20a_scripting_language",
);
// "https://mdn.go-mizu.dev/docs/JavaScript: a_scripting_language"

エラーの捕捉

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

// URIError: malformed URI sequence

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-decodeuri-encodeduri

ブラウザーの互換性

関連情報