总的来说,处理的思想是统一编码为utf-8

一般由如下几种可能的乱码问题:

(1)页面显示中文的乱码

(2)传递参数的中文乱码

(3)国际化资源文件的乱码

 

对于(1) 很简单,只有在页面上设置  pageEncoding="utf-8"就可以了。

对于(2) ,特别是提交中文表单的时候,最容易出现乱码问题。

比如

 

  1. String username=(String) loginForm.get("username"); 
  2. String password=(String) loginForm.get("password"); 

就是最常见的产生乱码的例子。

解决方法:

Step 1: 到server.xml中,在http端口(一般都是走http协议) 加上一行 URIEncoding="utf-8"

  1. <Connector port="8080" portocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/> 

Step 2: 编写java 过滤器,在doFilter中加入以下代码:

 

  1. request.setCharacterEncoding("utf-8"); 
  2. chain.doFilter(request,response); 

Step 3: 在web.xml中加入这个过滤器

 

对于(3),可以用JDK自带的工具native2ascii 来进行转换