struts 1におけるフォーム提出の文字化けして解決策

5880 ワード

質問:
すべてのページで設定された符号化がutf-8の場合でも、中国語の文字化けしょうが発生します.

一、文字化けしの原因


StrutsフレームワークはフォームデータをActionFormに直接送信しているため、ここではHttpRequestServiceletに対して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 }

Webでxmlで追加
1 <filter>
2     <filter-name>MyFilterfilter-name>
3     <filter-class>com.xidian.filter.MyFilterfilter-class>
4   filter>
5   <filter-mapping>
6     <filter-name>MyFilterfilter-name>
7     <url-pattern>/*url-pattern>
8   filter-mapping>