总的来说,处理的思想是统一编码为utf-8
一般由如下几种可能的乱码问题:
(1)页面显示中文的乱码
(2)传递参数的中文乱码
(3)国际化资源文件的乱码
对于(1) 很简单,只有在页面上设置 pageEncoding="utf-8"就可以了。
对于(2) ,特别是提交中文表单的时候,最容易出现乱码问题。
比如
- String username=(String) loginForm.get("username");
- String password=(String) loginForm.get("password");
就是最常见的产生乱码的例子。
解决方法:
Step 1: 到server.xml中,在http端口(一般都是走http协议) 加上一行 URIEncoding="utf-8"
- <Connector port="8080" portocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>
Step 2: 编写java 过滤器,在doFilter中加入以下代码:
- request.setCharacterEncoding("utf-8");
- chain.doFilter(request,response);
Step 3: 在web.xml中加入这个过滤器
对于(3),可以用JDK自带的工具native2ascii 来进行转换
本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/840631,如需转载请自行联系原作者