jsp中IE与FF(chrome)request参数编码不同

时间:2015年7月29日09:10:45

jsp页面设置了编码<%@page contentType="text/html; charset=utf-8"%>
在Action方法里面获得request的Parmater参数。
使用IE的时候下面的代码能输出正确汉字
String param = (String) request.getParameter("param");
param = new String(param.getBytes("ISO8859-1"));

______________________________________________

使用火狐的时候,第二行必须改成
param = new String(param.getBytes("ISO8859-1"), "UTF-8");
才能输出正确汉字。

 

 

原因:使用 <form>...</form> 提交的,浏览器会自动编码一次.
ajax 或者Get方式提交的,需要自己手动编码。而encodeURIComponent 使用的是 UTF-8 编码规则来编的.

 

解决方案:

js里面用encodeURIComponent把传递的参数转了一下码(encodeURIComponent(param)),
然后在java类中再转一次码
String param = (String) request.getParameter("param");
param = new String(param.getBytes("ISO8859-1"), "UTF-8");
这样IE和火狐都能正常输出了。

(意思内容为搜索资料)

posted @ 2015-07-29 09:07  danchen  阅读(172)  评论(0编辑  收藏  举报