escape encodeURI encodeURIComponent区别

escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。使用unescape来解码。

  

有效的URI(统一资源标示符)是不能包含某些字符的,如空格,所以需要进行编码,编码方法有:encodeURI()和encodeURIComponent(),

    对编的码进行解码方法有:decodeURI()和decodeURIComponent()。

    encodeURI()编的码只能decodeURI()解

    encodeURIComponent()编的码只能decodeURIComponent()解,

    encodeURI():用于编码完整的URI,它不对URI中的特殊字符进行编码:例如冒号、前斜杠、问号、英镑符号     


 var str0=encodeURI("http://www.cnblogs.com/ 2012/ 71.html");
     结果:http://www.cnblogs.com/%202012/%2071.html
      只对空格进行了编码

    encodeURIComponent():用于编码URI的某一部分,它对URI中的所有非标准字符进行编码

var str1=encodeURIComponent("http://www.cnblogs.com/ 2012/ 71.html");
    结果:http%3A%2F%2Fwww.cnblogs.com%2F%202012%2F%2071.html
     对所有非标准字符进行编码

通过对三个函数的分析,我们可以知道:escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参 数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。

原文地址:https://www.cnblogs.com/linux-centos/p/5806627.html