码迷,mamicode.com
首页 > Web开发 > 详细

关于jsp访问路径带中文值需encodeURI两次的原因

时间:2015-08-17 12:25:31      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

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一次

关于jsp访问路径带中文值需encodeURI两次的原因

标签:

原文地址:http://my.oschina.net/u/2287173/blog/493360

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!