标签:
jsp往后台传值的时候,一般可以通过路径传值和ajax传值。
其中通过ajax post传值不会出现中文乱码现象,但路径传值如果不通过特殊的编码,后台可能获取到的是一串乱码。
encodeURI可以帮助我们完成中文编码,encodeURI默认是采用utf-8进行编码的。其中中文在utf-8的编码格式中是由3个字节组成,每个字节转成16进制后会在前面添加一个%。
如 ‘江‘ 编码一次后 -> ‘%E6%B1%9F‘
但是后台获取数据的时候,会自动对值进行解码,此时后台解码的格式可能是‘iso-8859‘,而%会被当作转义字符,那么解码后就可能出现一堆乱码了。
因此此处需要对中文进行两次编码,将‘%‘也编码一次->‘%25‘,这样不论后台是什么解码格式,得到的值都将是中文utf-8编码一次的结果。
如 ‘江‘ 编码两次后 -> ‘%25E6%25B1%259F‘
后台对uri路径值 自动解码一次 ->‘%E6%B1%9F‘
再通过URLDecoder.decode()方法对值进行‘utf-8‘格式解码 -> ‘江‘
ps: ajax load()方法传中文参数的时候,只需要encodeURI一次
标签:
原文地址:http://my.oschina.net/u/2287173/blog/493360