decodeURIComponent()

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

decodeURIComponent() 函式用於解碼由 encodeURIComponent() 或類似例程先前建立的統一資源識別符號 (URI) 元件。

試一試

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

瀏覽器相容性

另見