CARVIEW |
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
decodeURI()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 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);
}
構文
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 をデコード
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
仕様書
Specification |
---|
ECMAScript® 2026 Language Specification> # sec-decodeuri-encodeduri> |
ブラウザーの互換性
Loading…