JavaScript decodeURI() 函数

JavaScript decodeURI() 语法

decodeURI() 是 JavaScript 的一个全局函数,它用于对已编码的 URI 进行解码。

语法:

decodeURI(uri)

说明:

decodeURI() 函数接收单个参数。

  • uri(必选):一个已编码的 URI 字符串。

decodeURI() 函数不会解码以下 URI 保留字符串(因为 encodeURI() 也不会编码它们):

; / ? : @ & = + $ , #

注意:

  • decodeURI() 是一个全局函数(顶层函数),可以直接调用而无需创建实例。
  • 如果编码时使用的是 encodeURI(),那么在解码时应该使用 decodeURI()。如果编码时使用的是 encodeURIComponent(),那么解码时应该使用 decodeURIComponent()。如果没有使用对应的函数,则会导致解析错误。

JavaScript decodeURI() 摘要

属于 JavaScript 全局对象
使用频率
官方文档 查看
MDN 查看

JavaScript decodeURI() 示例

接下来,我们通过一个简单的例子来讲解一下 JavaScript decodeURI() 是如何使用的。

示例 1:decodeURI() 基本用法

const str1 = "https://www.lvyenet.com/?keywords=%E7%BB%BF%E5%8F%B6%E7%BD%91";
console.log(decodeURI(str1));

const str2 = "https://www.lvyenet.com/?keywords=%CF%80%CE%B8%CF%86";
console.log(decodeURI(str2));

运行结果如下。

https://www.lvyenet.com/?keywords=绿叶网
https://www.lvyenet.com/?keywords=πθφ

decodeURI() 与 decodeURIComponent() 的区别

decodeURI() 与 decodeURIComponent() 这两个函数都用于对 URI 进行解码,但它们之间存在以下的区别。

  • decodeURI():不会对属于 URI 语法的字符(即 URI 保留字符串)进行解码,包括 /、:、?、= 等。比如 "%3Fkeywords%3Dpython%26charset%3Dutf8" 解码之后还是它本身。
  • decodeURIComponent():会对属于 URI 语法的字符进行解码,解码会更加彻底。比如 "%3Fkeywords%3Dpython%26charset%3Dutf8" 解码之后会变成 "?keywords=python&charset=utf8"。

示例 2:decodeURI() vs decodeURIComponent()

const str = "%3Fkeywords%3Dpython%26charset%3Dutf8";

console.log(decodeURI(str));
console.log(decodeURIComponent(str));

运行结果如下。

%3Fkeywords%3Dpython%26charset%3Dutf8
?keywords=python&charset=utf8

分析:

再次强调一下,如果想要解码 “整个 URI”,我们应该使用 decodeURI() 函数。如果想要解码 “URI 的某个部分(如查询字符串)”,我们应该使用 decodeURIComponent() 函数。

上一篇: encodeURIComponent()

下一篇: decodeURIComponent()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号