在下初涉ssh整合,在项目的时候遇到一个奇怪的乱码问题。以下是我的struts.xml部分配置:
当我以http://localhost:8080/My_email_ssh/user_login访问的时候,返回的_login.jsp是乱码,但以其他方式访问返回的_login.jsp却不是乱码,以下是我的userAction的login方法:弄了很长时间都未能解决,求高手指点迷津。
当我以http://localhost:8080/My_email_ssh/user_login访问的时候,返回的_login.jsp是乱码,但以其他方式访问返回的_login.jsp却不是乱码,以下是我的userAction的login方法:弄了很长时间都未能解决,求高手指点迷津。
1.页面的默认编码是ISO-8859-1是存放英文字符的。不支持中文
2.通过网络传递到tomcat服务器。而网络传输的默认字符集也是ISO-8859-1
3.中文字符等其他特殊字符 UTF-8(gbk gb2312 big5)
4.jvm的编译器是Unicode字符。解决方案:
1.保证所有jsp页面都是统一的字符集,UTF-8(gbk gb2312 big5)都可以
2.让请求和响应统一编码为:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
让jsp和servlet都统一
3.String str=new String(request.getParameter("tmp").getBytes("ISO8859-1"),"UTF-8")
4.定义过滤器。写一个类继承Filter接口,重写init方法
在这个方法定义
request.setCharacterEncoding("UTF-8");、
china.doFilt(request,response);
response.setCharacterEncoding("UTF-8");
5.终极解决方案:在tomcat的server.xml加入属性:URIEncoding="UTF-8"
前后台编码不一致
那为什么通过login.action访问的时候却没有出现乱码呢?