使用jqGrid框架查询时,遇到一个问题,用数字字母可以查询,而汉字在IE下不能查询。传给后台的值乱码了。
$('#roleList').jqGrid('setGridParam', {
url : 'role/queryRoles?roleName=' + roleName+'&t='+new Date(),
page : 1
}).trigger('reloadGrid');
使用jqGrid框架查询时,遇到一个问题,用数字字母可以查询,而汉字在IE下不能查询。传给后台的值乱码了。
$('#roleList').jqGrid('setGridParam', {
url : 'role/queryRoles?roleName=' + roleName+'&t='+new Date(),
page : 1
}).trigger('reloadGrid');
get方式提交的参数会跟在请求行中的uri后边,服务器按照默认的iso-8859-1进行解码,这时候解决乱码有两种办法:
办法一:修改服务器端对uri参数的默认编码
在tomcat的server.xml中,设置<Connector ….>元素的属性URIEncoding="UTF-8”即可。(默认没有设置此属性)
办法二:逆向操作
参数从浏览器到服务器,经过客户端utf-8编码,服务器端iso-8859-1解码,最终成为乱码。那我们将乱码进行相反的编解码,即可得到正常的参数值。
例如:String name = request.getParameter("name”);//得到乱码
name = new String(name.getBytes("iso-8859-1"),"utf-8”);//得到正常的name值
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
url编码格式是采用ASCII码,不是Unicode编码,在URL目录下不能包含中文,IE下好像是默认是使用UTF-8发送请求。中文发送还是中文,在解码是乱码。在发送前用encodeURIComponent进行转码