问题:

在你所有页面设置的编码都是utf-8的情况下仍然会出现中文乱码现象。

一、乱码出现原因

由于Struts框架直接把表单数据发送给了ActionForm,所以这里面没有对HttpRequestServlet进行SetCharacterEncoding,所以默认是按照ISO-8859-1。

二、解决办法

方法 : 就是在表单提交到ActionForm之前对request进行编码,写一个过滤器,对所有请求进行过滤

方式一:直接在过滤器中指定编码格式

MyFilter.java

 1 public class MyFilter extends HttpServlet implements Filter {
 2     private static final long serialVersionUID = 1L;
 3        
 4 
 5     public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws java.io.IOException, javax.servlet.ServletException { 
 6          // TODO Auto-generated method stub
 7           arg0.setCharacterEncoding("utf-8"); //设置接收编码
 8         arg1.setContentType("text/html;charset=utf-8");
 9         arg2.doFilter(arg0, arg1);   //必须
10     
11     }
12 
13     
14     public void init(FilterConfig arg0) throws javax.servlet.ServletException { 
15          // TODO Auto-generated method stub
16     }
17 
18 }
View Code

相关文章: