decodeURI()**decodeURI()** 函数解码由 encodeURI() 或类似例程先前创建的统一资源标识符 (URI)。
试用语法jsdecodeURI(encodedURI)
参数
encodedURI
完整的编码统一资源标识符。
返回值表示给定编码统一资源标识符 (URI) 的未编码版本的新的字符串。
异常
URIError
如果 encodedURI 包含一个 % 后面没有两位十六进制数字,或者如果转义序列没有编码有效的 UTF-8 字符,则抛出。
描述decodeURI() 是全局对象的函数属性。
decodeURI() 函数通过将形式为 %XX 的每个转义序列视为一个 UTF-8 代码单元(一个字节)来解码 URI。在 UTF-8 中,第一个字节中前导 1 位的数量,可能是 0(对于 1 字节的 ASCII 字符),2、3 或 4,表示字符中的字节数。因此,通过读取第一个转义序列,decodeURI() 可以确定要使用多少个转义序列。如果 decodeURI() 找不到预期的序列数量,或者如果转义序列没有编码有效的 UTF-8 字符,则会抛出一个 URIError。
decodeURI() 解码所有转义序列,但如果转义序列编码以下字符之一,则转义序列将保留在输出字符串中(因为它们是 URI 语法的一部分)
; / ? : @ & = + $ , #
示例解码西里尔语 URLjsdecodeURI(
"https://mdn.org.cn/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B",
);
// "https://mdn.org.cn/ru/docs/JavaScript_шеллы"
decodeURI() 与 decodeURIComponent()decodeURI() 假设输入是一个完整的 URI,因此它不会解码作为 URI 语法一部分的字符。
jsdecodeURI(
"https://mdn.org.cn/docs/JavaScript%3A%20a_scripting_language",
);
// "https://mdn.org.cn/docs/JavaScript%3A a_scripting_language"
decodeURIComponent(
"https://mdn.org.cn/docs/JavaScript%3A%20a_scripting_language",
);
// "https://mdn.org.cn/docs/JavaScript: a_scripting_language"
捕获错误jstry {
const a = decodeURI("%E0%A4%A");
} catch (e) {
console.error(e);
}
// URIError: malformed URI sequence
规范规范ECMAScript 语言规范 # sec-decodeuri-encodeduri浏览器兼容性BCD 表仅在浏览器中加载
另请参阅
decodeURIComponent()
encodeURI()
encodeURIComponent()