encodeURI , encodeURIComponent ,escape 三者都是js对字符串进行编码,主要对比一下区别
escape(str)
除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。
escape不会编码的字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
使用场景:最好是单纯对非URI的string需要编码的时候使用它
ECMAScript 3中已经不提倡使用这个函数了,所以我们还是少用吧
encodeURI(uri)
encodeURI()对 URI 进行完整的编码,
encodeURI不会进行编码的字符有82个 :!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
具有特殊含义的 ASCII 标点符号(, / ? : @ & = + $ #)不会进行转义的
使用encodeURI()编码后的结果是除了空格之外的其他字符都原封不动,只有空格被替换成了%20,encodeURI主要用于直接赋值给地址栏
ocation.href=encodeURI("http://www.baidu.com/")
encodeURIComponent(str)
encodeURIComponent:不会进行编码的字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
encodeURIComponent编码更很一些,被编码后的字符都变成%xx这样的16进制形式
encodeURIComponent() 方法在编码单个 URIComponent(指请求参 数)应当是最常用的,它可以将参数中的中文、特殊字符进行转义,而不会影响整个URL
location.href="http://www.baidu.com?name="+encodeURIComponent("xie")
参考:
https://blog.csdn.net/baidu_33033415/article/details/62882479
https://blog.csdn.net/luman1991/article/details/54980722
网友评论