struts 1におけるフォーム提出の文字化けして解決策
5880 ワード
質問:
すべてのページで設定された符号化がutf-8の場合でも、中国語の文字化けしょうが発生します.
StrutsフレームワークはフォームデータをActionFormに直接送信しているため、ここではHttpRequestServiceletに対してSetCharacterEncodingを行っていないため、デフォルトはISO-8859-1です.
二、解決方法
方法:フォームがActionFormにコミットされる前にrequestを符号化し、フィルタを書き、すべてのリクエストをフィルタします.
方式一:フィルタに直接符号化フォーマットを指定する
MyFilter.java
Webでxmlで追加
すべてのページで設定された符号化が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>