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和火狐都能正常输出了。
(意思内容为搜索资料)