encodeURIComponent和encodeURI的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了encodeURIComponent和encodeURI的区别相关的知识,希望对你有一定的参考价值。
参考技术A 相同点: 1、encodeURIComponent()和enCodeURI()方法都可以对URI进行编码,以便发送给浏览器,因为有效URI不能包含某些字符,例如空格等。通过这两个方法对URI进行编码,它们用特殊的UTF-8编码替换所有无效的字符,从而能够让浏览器识别不同点:
1、encodeURI()主要用于整个URI,它不会对本身属于URI的特殊字符进行编码例如:
2.encodeURIComponent()可用于编码URI中的参数,encodeURIComponent方法不会对下列字符编码:
3. encodeURIComponent解码的范围更广,encodeURI主要是对空格进行编码
4.encodeURI通过decodeURI进行解码,encodeURLComponent通过decodeURIComponent进行解码
encodeURI()和encodeURIComponent() 区别
URI: Uniform ResourceIdentifiers,通用资源标识符
主要区别在于,encodeURI()不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号;而encodeURIComponent()则会对它发现的任何非标准字符进行编码。来看下面的例子:
var uri="http://www.jxbh.cn/illegal value.htm#start";
//”http: //www.jxbh.cn/illegal%20value .htm#s tart”
alert(encodeURI (uri)):
//”http% 3A%2F%2Fwww.jxbh.cn%2 Fillegal%2 0value. htm%23 start”
alert( encodeURIComponent (uri));
encodeURI():会替换所有的字符,但不包括以下字符:
类型 | 包含 |
保留字符 | ; , / ? : @ & = + $ |
非转义的字符 | 字母 数字 - _ . ! ~ * ‘ ( ) |
数字符号 | # |
则 encodeURIComponent()会转义以上符号,但不包括:字母、数字、(
、)
、.
、!
、~
、*
、‘
、-
和_
encodeURI(‘;‘) => ; encodeURIComponent(‘;‘) => %3B // utf-8编码 encodeURI(‘#‘) => # encodeURIComponent(‘#‘) => %23
encodeURI 和 encodeURIComponent 的主要区别在于需要转义的字符范围不一样。
使用encodeURI()编码后的结果是除了空格之外的其他字符都原封不动,只有空格被替换成了%20。而encodeURIComponent()方法则会使用对应的编码替换所有非字母数字字符。这也正是可以对整个URI使用encodeURI(),而只能对附加在现有URI后面的字符串使用encodeURIComponent()的原因所在。一般来说,我们使用encodeURIComponent()方法的时候要比使用encodeURI()更多,因为在实践中更常见的是对查询字符串参数而不是对基础URL进行编码
以上是关于encodeURIComponent和encodeURI的区别的主要内容,如果未能解决你的问题,请参考以下文章
Javascript encodeURIComponent 匹配 java encode 特殊字符
encodeURI , encodeURIComponent , decodeURL , decodeURIComponent 转码与解码
escape,encodeURI,encodeURIComponent, URLEncode, RawURLEncode, HTMLEntity, AddSlash, JSON Encode(示例代码