encodeURI() 和 encodeURIComponent()

今天在看《JavaScript高级程序设计》这本书的时候,刚好看到关于URI编码方法,联想起之前所看的http的知识,于是对比一下encodeURI和encodeURIComponent这两个方法

首先这两个方法都是用于URI的编码,知其然知其所以然,为什么需要用到URI的编码呢?

简单的说就是URI编码后方便浏览器识别,有效的URI中不能包含某些字符,例如空格。用特殊的UTF-8编码替换所有无效的字符,从而让浏览器能够接受和理解。

一、encodeURI()

encodeURI()主要是用于整个URI进行编码,它会将URI中的空格替换成%20,其他字符都原封不动。

var uri = "https://mp.csdn.net/console/home #start"
console.log(encodeURI(uri))

比如执行这段代码,可以看到,控制台打印出的URI只有空格被替换了,其他都是原封不动的。

https://mp.csdn.net/console/home%20#start

既然有编码方法,自然也有解码方法,encodeURI()对应的解码方法就是decodeURI()。使用decodeURI()便可以将上面这个编码后的URI解码成原来的URI了。

二、encodeURIComponent()

encodeURIComponent()是用于对URI中的某一段进行编码,它会将它发现的任何非标准字符都进行编码。

var uri = "https://mp.csdn.net/console/home #start"
console.log(encodeURIComponent(uri))

同样是刚刚这个URI,使用这个方法打印出来的,便是下面这样:

https%3A%2F%2Fmp.csdn.net%2Fconsole%2Fhome%20%23start

对应的解码方法是decodeURIComponent()。

三、总结对比

对这个两个方法我总结了下面这个表,可以更加直观简便的看出区别。

 encodeURI()encodeURIComponent()
编码对象整个URIURI中的某一段
编码规则对空格等特殊字符编码对发现的任何非标准字符进行编码
解码方法decodeURI()decodeURIComponent()

 

 

 

 


另外,以前使用的编码方法escape()和unescape()以及被ECMA-262第三版废弃了~~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值