日期:2014-05-16  浏览次数:20318 次

JavaScript URL encoding方法
JavaScript支持以下三种URL encoding方法:
  1. escape;
  2. encodeURI;
  3. encodeURIComponent.
下面阐述一下这三者间的不同:
?????escape不会改变数字,拉丁字符以及+ - * / . _ @等,所有其他字符都会被转义为%XX形式,XX是原字符的ASCII码。
? ? ?对于Unicode字符,escape处理逻辑更为复杂。如果输入是Unicode字符串,那么非ASCII的Unicode字符将会被转移为Unicode字符序列%uXXXX。例如,大写西里尔字符A,escape会转为%u0410。escape对应的解码函数是unescape。
? ? ?
? ? ?encodeURI和encodeURIComponent
? ? ?在escape之外,当今流行的浏览器还支持另外两个URL编码的函数:encodeURI和encodeURIComponent。他们与escape相似,但他们会保持某些escape会转义的字符(譬如. ~ ( )等)不变;encodeURIComponent会将一些字符入(+ - @)进行转义,而其在escape中保持不变。与escape不同的是,对于Unicode输入,encodeURI和encodeURIComponent不会生成%uXXXX的格式,相反,它们会生成%XX%XX或%XX%XX%XX。例如,encodeURI和encodeURIComponent会将大写西里尔字符A转移为%D0%90,欧元符号(€)转为%E2%82%AC。要对encodeURI和encodeURIComponent编码的字符进行解码,分别调用decodeURI和decodeURIComponent即可。