上网查了很多资料,但都没有解决自己的问题。
我在action中
System.out.println(request.getCharacterEncoding());
打印出utf-8
而原页面时pageEncoding="gb2312“的
现在我jsp跳转到action的时候,在action中getParameter 出现乱码
后来用
String search = new String(request.getParameter("search").toString().getBytes("utf-8"),"gb2312");
也没有效果。
大家有什么好方法?
我在action中
System.out.println(request.getCharacterEncoding());
打印出utf-8
而原页面时pageEncoding="gb2312“的
现在我jsp跳转到action的时候,在action中getParameter 出现乱码
后来用
String search = new String(request.getParameter("search").toString().getBytes("utf-8"),"gb2312");
也没有效果。
大家有什么好方法?
这个我去试试。
String search = new String(request.getParameter("search").toString().getBytes("gb2312"),"utf-8");
不能乱来这样的转换:getBytes("gb2312"),"utf-8",别人的不一定合适如果各个部分的编码都一致了,这就好解决了,逐步分析假设你现以统一为gb2312中文从前台提交到达tomcat之前,都是gb2312的编码,但是tomcat是国外人开发的,它接到请求后
默认会按 ISO-8859-1的编码去转换(这个可以去看tomcat源码),这时就乱了
故你的String search = new String(request.getParameter("search").toString().getBytes("utf-8"),"gb2312");
肯定不对了,getBytes("utf-8")你怎么会这么写,请问是出于什么原因???
不会是utf-8的,除非你把tomcat默认设置改了这样你在request.getParameter的时候也就乱了,所以你要这样一下 .getBytes("ISO-8859-1"),"gb2312",从iso-8859-1再转回gb2312总的流程就是 gb2312--->ISO-8859-1--->gb2312
这时写个过滤器,request.setCharacterEncoding 为你的统一编码,如gb2312
这样后面request.getParameter是不会乱码的
}else{
对于get请求,就得getBytes...这样转换了
}另外,对ajax请求的post请求也得按get请求进行转换
没见过你这样的转码方式,getBytes("iso-8859-1"),"utf-8"写个过滤器就可以完成转码了!
在过滤器里写上:
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
这样就可以了