試一試
function containsEncodedComponents(x) {
// ie ?,=,&,/ etc
return decodeURI(x) !== decodeURIComponent(x);
}
console.log(containsEncodedComponents("%3Fx%3Dtest")); // ?x=test
// Expected output: true
console.log(containsEncodedComponents("%D1%88%D0%B5%D0%BB%D0%BB%D1%8B")); // шеллы
// Expected output: false
語法
js
decodeURIComponent(encodedURI)
引數
encodedURI-
統一資源識別符號的編碼元件。
返回值
一個新字串,表示給定編碼統一資源識別符號 (URI) 元件的解碼版本。
異常
URIError-
如果
encodedURI包含一個後面沒有跟著兩位十六進位制數字的%,或者轉義序列沒有編碼一個有效的 UTF-8 字元,則會丟擲此錯誤。
描述
decodeURIComponent() 是全域性物件的函式屬性。
decodeURIComponent() 使用與 decodeURI() 中描述相同的解碼演算法。它解碼所有轉義序列,包括那些不是由 encodeURIComponent 建立的序列,例如 -.!~*'()。
示例
解碼西里爾語 URL 元件
js
decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
// "JavaScript_шеллы"
捕獲錯誤
js
try {
const a = decodeURIComponent("%E0%A4%A");
} catch (e) {
console.error(e);
}
// URIError: malformed URI sequence
從 URL 解碼查詢引數
decodeURIComponent() 不能直接用於從 URL 解析查詢引數。它需要一些準備工作。
js
function decodeQueryParam(p) {
return decodeURIComponent(p.replace(/\+/g, " "));
}
decodeQueryParam("search+query%20%28correct%29");
// 'search query (correct)'
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-decodeuricomponent-encodeduricomponent |
瀏覽器相容性
載入中…