本文讨论如何对传递参数用JS编码与解码
1:编码与解码方法的对应关系
escape -----------------------------------------------------unescape
encodeURI -------------------------------------------------decodeURI
encodeURIComponent -----------------------------------encodeURIComponent
2:解码与编码方法用法
如var value1=escape('1²'); var getValue1=unescape(value1); encodeURI ,decodeURI,encodeURIComponent ,encodeURIComponent 用法和escape,unescape用法都是一样的。
3:三种编码方法的区别和联系
编码方式:encodeURI ,encodeURIComponent 都是采用UTF-8进行对参数编码,而escape 则不是。
不会被编码的字符:encodeURI 不对:":"、"/"、";" 和 "?"字符进行编码。
用法场合:escape 不对URL进行编码,如果要对URL进行编码,应该使用encodeURI 或者encodeURIComponent ,对应的解码方法也是这样。
推荐使用的方法顺序:encodeURIComponent --encodeURI --escape 。
注意:用encodeURIComponent 、encodeURI 在前台编码后的字符串,可以直接在后台用Java解码的方式URLDecoder.decode(val,"UTF-8");进行解码,原因是这两个方法本身就是以UTF-8进行编码的。用起来很方便。