decodeURIComponent()

decodeURIComponent() 函数对先前由 encodeURIComponent() 或类似例程创建的统一资源标识符 (URI) 组件进行解码。

¥The decodeURIComponent() function decodes a Uniform Resource Identifier (URI) component previously created by encodeURIComponent() or by a similar routine.

Try it

语法

¥Syntax

js
decodeURIComponent(encodedURI)

参数

¥Parameters

encodedURI

统一资源标识符的编码组件。

返回值

¥Return value

表示给定编码统一资源标识符 (URI) 组件的解码版本的新字符串。

¥A new string representing the decoded version of the given encoded Uniform Resource Identifier (URI) component.

例外情况

¥Exceptions

URIError

如果 encodedURI 包含 % 且后面没有两个十六进制数字,或者转义序列未编码有效的 UTF-8 字符,则抛出该错误。

描述

¥Description

decodeURIComponent() 是全局对象的函数属性。

¥decodeURIComponent() is a function property of the global object.

decodeURIComponent() 使用与 decodeURI() 中描述的相同的解码算法。它解码所有转义序列,包括那些不是由 encodeURIComponent 创建的序列,例如 -.!~*'()

¥decodeURIComponent() uses the same decoding algorithm as described in decodeURI(). It decodes all escape sequences, including those that are not created by encodeURIComponent, like -.!~*'().

示例

¥Examples

解码西里尔字母 URL 组件

¥Decoding a Cyrillic URL component

js
decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
// "JavaScript_шеллы"

捕获错误

¥Catching errors

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

// URIError: malformed URI sequence

从 URL 解码查询参数

¥Decoding query parameters from a URL

decodeURIComponent() 不能直接用于解析 URL 中的查询参数。这需要一些准备。

¥decodeURIComponent() cannot be used directly to parse query parameters from a URL. It needs a bit of preparation.

js
function decodeQueryParam(p) {
  return decodeURIComponent(p.replace(/\+/g, " "));
}

decodeQueryParam("search+query%20%28correct%29");
// 'search query (correct)'

规范

Specification
ECMAScript Language Specification
# sec-decodeuricomponent-encodeduricomponent

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看