escape、encodeURI、encodeURIComponent 方法的区别

[预备知识]
        对与通过get方式提交的url,浏览器在提交前首先根据http协议把一一个的参数及其值解析配对。而url的参数间是通过&分割的,这就是浏 览器进行参数配置的分割依据。如果你的参数值中含有&等url特殊字符,那么你在服务器端就会拿到意想不到的值。所以必须对url的特殊字符进行 转义。
编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。
下表中列出了一些URL特殊符号及编码

十六进制值
1. +  URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. /  分隔目录和子目录 %2F 
4. ?  分隔实际的 URL 和参数 %3F 
5. % 指定特殊字符 %25 
6. # 表示书签 %23 
7. & URL 中指定的参数间的分隔符 %26 
8. = URL 中指定参数的值 %3D

 

RFC3986 文档规定,Url 中只允许包含英文字母(a-zA-Z )、数字(0-9 )、-_.~4 个特殊字符以及所有保留字符。
Url
可以划分成若干个组件,协议、主机、路径等。RFC3986 中指定了以下字符为保留字符: ! * ' ( ) ; : @ & = + $ , / ? # [ ]


escape 方法
描述
对 String 对象编码以便它们能在所有计算机上可读 语法
escape(charstring) charstring 参数是要编码的 String 对象。 说明
escape 返回一个包含了 charstring 内容的新的 String 对象( Unicode 格式), 所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。 例如,空格返回的是 "%20" 。 字符的值大于 255 的用 %uxxxx 格式存储。
适用于:Global 对象

encodeURI 方法
描述
返回编码为有效的统一资源标识符 (URI) 的字符串。 语法
function encodeURI(URIString : String) : String 参数
URIString 必选。表示编码 URI 的字符串。2007-7-31 备注
encodeURI 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用 encodeURIComponent 对这些字符进行编码。
适用于:Global 对象

encodeURIComponent 方法
描述
返回编码为统一资源标识符 (URI) 的有效组件的字符串。 语法
function encodeURIComponent(encodedURIString : String) : String 参数
encodedURIString 必选。表示编码 URI 组件的字符串。 备注
encodeURIComponent 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURIComponent,则将返回初始的字符串。因为 encodeURIComponent 方法将对所有字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,则其中的斜杠也将被编码,这样,当该字符串作为请求发送到 Web 服务器时它将是无效的。如果字符串中包含多个 URI 组件,请使用 encodeURI 方法进行编码。
适用于:Global 对象

你可能感兴趣的:(escape、encodeURI、encodeURIComponent 方法的区别)