`
kuiyuexiang
  • 浏览: 54757 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

javascript 中 escape,encodeURI 区别?

阅读更多


js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

1、   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。                            

例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u= +encodeURIComponent("http://cang.baidu.com/bruce42")+">退出</a>');</script>

2、   进行url跳转时可以整体使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、   js使用数据时可以使用escape

例如:搜藏中history纪录。

4、   escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。


最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

回复:javascript  中 escape,encodeURI 区别?

escape() 方法:
所有空格、标点符号、重音字符,以及任何其他非ASCII字符都编码改为"%XX"的形式,xx是16进制数字所代表.
escape和unescape的编码和解码功能, escape返回16进制编码的一种ISO拉丁字符集. unescape的功能将具有特殊值的16进制编码转换为ASCII字符串
举例:
escape('!@#$%^&*(){}[]=:/;?+\'"'):
结果:%21@%23%24%25%5E%26*%28%29%7B%7D%5B%5D%3D%3A/%3B%3F+%27%22

encodeURI() 方法
    Encodeuri方法返回一个编码后的URI. 因此,如果你将其结果用Decodeuri方法,原始的串会返回. Encodeuri的方法并不对以下字符编码:":"、"/"、"; "、"? ". 但可以使用 encodeuricomponent 的方法对这些字符进行encode. 
    encodes,一种 Uniform Resource Identifier (URI)(URI)逐一替换某些字符,描述为UTF-8编码的特点.
    例如 :
    encodeURI('!@#$%^&*(){}[]=:/;?+\'"'):
    结果:!@#$%25%5E&*()%7B%7D%5B%5D=:/;?+'%22

encodeURIComponent() 方法:
encodeuricomponent 方法返回一个编码的URI. 因此,如果你将decodeuricomponent,原来的串会返回. 由于所有文字encodesencodeuricomponent方法都会进行编码,所以要小心,如果存在路径等串例如: "/FOLDER1/FOLDER2/DEFAULT.HTML". 加密后并不会,如果作为一个网络服务器的请求将会失效. 使用这种方法Encodeuri当字符串超过一个以上URI组成.
    encodes,一种 Uniform Resource Identifier (URI)(URI)逐一替换某些字符,描述为UTF-8编码的特点. 
 例子:最简单的方法就是看它们加密这些字符后生成的代码.
encodeURIComponent('!@#$%^&*(){}[]=:/;?+\'"'):
结果 !%40%23%24%25%5E%26*()%7B%7D%5B%5D%3D%3A%2F%3B%3F%2B'%22 


回复:javascript  中 escape,encodeURI 区别?

什么时候适合用什么方法?

escape() 方法不会加密 + 在服务器端会被解析为空格以及在表单forms区域中的spaces.基于这样的缩减方式,你应该尽可能的避免使用这种方法,二选一的话,最好的经常使用 encodeURIComponent().

escape() 不会加密: @*/+

使用encodeURI()  比 escape() 稍专业化,它是针对URIs编码的 .一个做为querystring的反面, 属于URL的一个部分.使用这种方法是当你需要将一个字符串转换为URIs资源标识以及需要某些字符保持非encode状态.请记住, 这个' 字符是不会进行编码的,因为它本身就包括在URIs里.

encodeURI()不会加密: !@#$&*()=:/;?+'

最后, encodeURIComponent() 方法用在大多数cases中,当你需要对一个单独URIs部件进行编码,这种方法可以加密某些特殊用于的URIs的字符,因此大部分部件可以包含在里面. 记住, ' 字符本身就包括在URIs里,所以不会此方法不会对其进行编码.

encodeURIComponent() 不会加密: !*()'

分享到:
评论
1 楼 shohokuf 2008-08-06  
谢谢lz~~~~

相关推荐

    Javascript中escape(),_encodeURI()和encodeURIComponent()之精析与比较.doc

    Javascript中escape(),_encodeURI()和encodeURIComponent()之精析与比较.doc

    【JavaScript源代码】基于网址URL中特殊字符转义编码.docx

    基于网址URL中特殊字符...Javascript中的escape,encodeURI和encodeURIComponent的区别 安全字符不同 兼容性不同 对Unicode字符的编码方式不同 适用场合不同 表单提交文档字符集会影响encodeURI吗?其他和Url编码相关

    javascript 字符 Escape,encodeURI,encodeURIComponent

    不会被此方法编码的字符: @ * / + encodeURI() 方法: 把URI字符串采用UTF-8编码格式转化成escape格式的字符串。 不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + ‘ encodeURIComponent() 方法: 把 URI字符...

    深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape, decodeURI, decodeURIComponent 。 下面简单介绍一下它们的区别: 1 escape()函数 定义和...

    escape、encodeURI 和 encodeURIComponent 的区别

    escape(), encodeURI()和encodeURIComponent()是在Javascript中用于编码字符串的三个常用的方法,而他们之间的异同却困扰了很多的Javascript初学者,今天我就在这里对这三个方法详细地分析与比较一下。

    js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数: unescape,decodeURI,decodeURIComponent 。 下面简单介绍一下它们的区别 1 escape()函数 定义和...

    JavaScript encodeURI 和encodeURIComponent

    encodeURI和encodeURIComponet函数都是javascript中用来对URI进行编码,将相关参数转换成UTF-8编码格式的数据。URI在进行定位跳转时,参数里面的中文、日文等非ASCII编码都会进行编码转换

    js中编码函数:escape,encodeURI与encodeURIComponent详解

    escape(), encodeURI()和encodeURIComponent()是在Javascript中用于编码字符串的三个常用的方法,而他们之间的异同却困扰了很多的Javascript初学者,这篇文章详细的给大家介绍了js中编码函数:escape,encodeURI与...

    javascript转码

    javascript转码,JS中encodeURI,escape,encodeURIComponentd

    javascript url几种编码方式详解

    2. encodeURI()是javascript中真正用来对URL编码的函数。编码整个URL地址,但对特殊含义的符号”;/?:@&=+$,#”,也不进行编码。对应的解码函数是decodeURI()。 3. encodeURIComponent()能编码”;/?:@&=+$,#”这些...

    JavaScript中各种编码解码函数的区别和注意事项

    JavaScript 中encodeURI,encodeURIComponent与escape的区别和注

    javascript 对url编码 解码

    js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponen

    精通JavaScript

    2.选择浏览器的“工具”-“安全”-“本地Intranet”-“自定义级别”-“活动脚本”中选用“禁用”单选框 3.在浏览器中输入下述地址:http://localhost/1.2.htm • 1.1.htm 多段代码相互调用 • 1.2....

    ajax中文乱码如何解决

    今天终于解决了AJAX的中文乱码问题,写篇文章来帮助一下...今天把问题解决了,很简单,是使用escape(或encodeURI,两个函数javascript的函数,功能基本相同,可以查一下相关的帮助),但要使用两次,这是解决问题的关键

    字符串编码的机器

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。 javascript的简单编码机器和解码机器二合一

    JavaScript权威指南

    JavaScript权威指南 犀牛书 Chapter 1. Introduction to JavaScript Section 1.1. JavaScript Myths Section 1.2. Versions of JavaScript Section 1.3. Client-Side JavaScript Section 1.4. JavaScript ...

    JavaScript中的编码和解码函数

    js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断...

    Javascript中的几种URL编码方法比较

    javascript中存在几种对URL字符串进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。 escape() 方法:  采用ISO Latin字符集对指定的字符串进行编码。所有的空格符...

Global site tag (gtag.js) - Google Analytics