!!!Filterで文字化け対策
[J2EE]{{category 文字化け}}
!Webアプリケーションの文字化け対策
以下のようなフィルターを作成し、web.xmlに設定。
package info.typea.fugitive.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* Webアプリケーションでの文字コードを一括処理するフィルタ
*
* StrutsのActionFormでは、リクエストパラメータの解析時に、文字エンコーディングが行われないため、
* アプリケーション全体で使用する文字エンコーディングを定義したフィルタを適用する。
*
* WEB-INF/web.xml にて、以下のように指定することで、有効になる。
* ここで、使用する文字コードを設定する。
*
* <filter> * <filter-name>CharacterEncodingFilter</filter-name> * <filter-class>fugitive.fw.filter.CharacterEncodingFilter</filter-class> * <init-param> * <param-name>encording</param-name> * <param-value>UTF-8</param-value> * </init-param> * </filter> * <filter-mapping> * <filter-name>CharacterEncodingFilter</filter-name> * <url-pattern>/*</url-pattern> * </filter-mapping> ** @author yagi */ public class CharacterEncodingFilter implements Filter { /** * 文字エンコーディング */ private String encording = null; /* @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ public void init(FilterConfig config) throws ServletException { this.encording = config.getInitParameter("encording"); } /* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { request.setCharacterEncoding(this.encording); filterChain.doFilter(request, response); response.setCharacterEncoding(this.encording); } /* @see javax.servlet.Filter#destroy() */ public void destroy() { this.encording = null; } } *Tomcat 5.x GET でパラメータを渡すと文字化け