encodeURI,encodeURIComponent编码

encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent() URL编码

Global对象的encodeURI()和encodeURIComponent()方法对URI进行编码,以便发送给浏览器。有效的URI中不能包含某些字符,例如空
格。而这两个URI编码方法就可以对URI进行编码,它们用特殊的UTF-8编码替换所有无效的字符,从而让浏览器接受和理解。

其中,encodeURI()主要用于整个URI(例如,http://www.w3cmm.com/illegal value.htm),而encodeURIComponent()主要用于对URI中的某一段(例如前面URI中的illegal value.htm)进行编码。它们的主要区别在于,encodeURI()不会对本身术语URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号;而encodeURIComponent()则会对它发现的任何 非标准字符进行编码。来看下面的例子:

var uri = "http://www.w3cmm.com/illegal value.htm#start";
//"http://www.w3cmm.com/illegal%20value.htm#start"
alert(encodeURI(uri));

//"http%3A%2F%2Fwww.w3cmm.com%2Fillegal%20value.htm%23start"
alert(encodeURIComponent(uri));

使用encodeURI()编码后的结果是除了空格之外的其它字符都原封不动,只有空格被替换成了%20。而在encodeURIComponent()方法则会使用对应的编码替换所有非字母数字字符。这也正是可以对整个URI使用encodeURI(),而只能对附加在现有URI后面的字符串使用encodeURIComponent()的原因所在。

一般来说,我们使用encodeURIComponent()方法的时候要比使用encodeURI()更多,因为在实践中更常见的是对查询字符串参数而不是对基础URI进行编码。

与encodeURI()和encodeURIComponent()方法对应的两个方法分别是decodeURI()和decodeURIComponent()。其中,decodeURI()只能对使用encodeURI()替换的字符进行解码。例如,它可将%20替换成一个空格,但不会对%23作任何处理,因为%23表示井字号(#),而井字号不是使用encodeURI替换的。同样地,decodeURIComponent()能够解码使用encodeURIComponent()编码的所有字符,即它可以解码任何特殊字符的编码。来看下面的例子:

var uri = "http%3A%2F%2Fwww.w3cmm.com%2Fillegal%20value.htm%23start"
//"http%3A%2F%2Fwww.w3cmm.com%2Fillegal value.htm%23start"
alert(decodeURI(uri));

//"http://www.w3cmm.com/illegal value.htm#start"
alert(decodeURIComponent(uri));

这里,变量uri包含着一个由encodeURIComponent()编码的字符串。在第一次调用decodeURI()输出的结果中,只有%20被替换成了空格。而在第二次调用decodeURIComponent()输出的结果中,所有特殊字符的编码都被替换成了原来的字符,得到了一个未经转义的字符串。

URI方法encodeURI()、encodeURIComponent()、decodeURI()和decodeURIComponent()用于替代已经被ECMA-262第三版废弃的escape()和unescape()方法。URI方法能够编码所有Unicode字符,而原来的方法只能正确地编码ASCII字符。因此在开发实践中,特别是在产品级的代码中,一定要使用URI方法,不要使用escape()和unescape()方法。

时间: 2024-10-13 00:42:10

encodeURI,encodeURIComponent编码的相关文章

url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介

url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介 2014年10月12日 16806次浏览 引子 浏览器URl地址,上网一定会用到,但是浏览器地址有中文或者浏览器url参数操作的时候,经常会用到encodeURIComponent()和decodeURIComponent()以及encodeURI()等等.关于浏览器参数操作,请看文章http://www.haorooms.com/post/js_url_canshu ,今天主要讲讲e

url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介【转】

引子 浏览器URl地址,上网一定会用到,但是浏览器地址有中文或者浏览器url参数操作的时候,经常会用到encodeURIComponent()和decodeURIComponent()以及encodeURI()等等.关于浏览器参数操作,请看文章http://www.haorooms.com/post/js_url_canshu ,今天主要讲讲escape(),encodeURI(),encodeURIComponent()这几个函数的用法和区别. 为啥会有浏览器编码这一说法 一般来说,URL只能

JavaScript中有对字符串编码的三个函数:escape,encodeURI,encodeURIComponent

JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent . 下面简单介绍一下它们的区别 1 escape()函数 定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string) 参数  描述  string  必需.要被转义或编码的字符串. 返回值 已编码的

JavaScript中有三个可以对字符串编码的函数,分别是: escape(),encodeURI(),encodeURIComponent()

JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent . 下面简单介绍一下它们的区别 1 escape()函数 定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string) 参数  描述  string  必需.要被转义或编码的字符串. 返回值 已编码的

js中的三个编码函数:escape,encodeURI,encodeURIComponent

1. eacape(): 该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / .其他所有的字符都会被转义序列替换.其它情况下escape,encodeURI,encodeURIComponent编码结果相同. escape对0-255以外的unicode值进行编码时输出%u****格式 可以使用 unescape() 对 escape() 编码的字符串进行解码. ECMAScript v3 反对使用该方法,应用使用 deco

escape()、encodeURI()、encodeURIComponent() 编码解码

1 escape().encodeURI().encodeURIComponent()区别详解 2 3 JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent . 4 5 下面简单介绍一下它们的区别 6 7 1 escape()函数 8 9 定义和用法 10 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上

escape,encodeURI,encodeURIComponent

JavaScript/js中,有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent . escape()函数 定义和用法 :escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 :escape(string) 参数  描述  :string  必需.要被转义或编码的字符串. 返回值 :已编码的 string 的

escape, encodeURI, encodeURIComponent 的使用情况

escape, encodeURI, encodeURIComponent 的使用情况: 1.js使用数据时可以使用escape: 2.传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断: 3.进行url跳转时可以整体使用encodeURI.例如: Location.href = encodeURI(“http://www.javaweb.cc”): 4.escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下esca

js escape, encodeURI, encodeURIComponent

escape,   encodeURI,   encodeURIComponent 1)基本介绍 js 对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent, 相应3个解码函数:decodeURI,decodeURIComponent 2)用途 1.   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断. 例如:"http://www.baidu.com?name="+encodeURICom