Tomcat 5[1].0.19中国語の文字化けしを徹底的に解決する


一、Includeのページの文字化けしょう:includeが入ってきたページは文字化けして、その他のページは正常です.理由:TomcatはデフォルトでISO-8859-1符号化を用いるが、includeではTomcatが外層に正確に従うことができない場合がある.jspファイルの符号化はincludeから入ってきたファイルを解析し、includeから入ってきたファイルの中の中国語が文字化されないようにする.解決:ここには多くの解決策がありますが、私たちの中国語環境では、根本的な解決策はTomcat 5.0.19のコアデフォルト符号化をISO-8859-1からGBKに変更することです.修正したjarファイル、jasper-compilerは以下のアドレスでダウンロードできます.jar,jasper-runtime.JArは/common/libの下にあり、その他は/server/libの下にあり、新しい.JArファイルは元に代わる.jarでいいです.二、提出したデータの文字化けしょう:フォームを通じて提出したデータの文字化けしょう.原因:原因不明.Tomcatはリクエストを受信した後、requestの情報に基づいて正確な符号化方式を繰り上げることができなかったのかもしれない.解決:文字セットを設定するFilterを追加できます.//=================初心者は、このファイルをWEB-INFclassesfiltersの下に置いてください.JAvaを保存してコンパイルしてeclipseをお勧めします
 
 
package filters;

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;
import javax.servlet.UnavailableException;

public class SetCharacterEncodingFilter implements Filter {
 protected String encoding = null;
 protected FilterConfig filterConfig = null;
 protected boolean ignore = true;

 public void destroy() {
  this.encoding = null;
  this.filterConfig = null;
 }

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {

 // Conditionally select and set the character encoding to be used
 if (ignore || (request.getCharacterEncoding() == null)) {
  String encoding = selectEncoding(request);
  if (encoding != null)
   request.setCharacterEncoding(encoding);
 }

 // Pass control on to the next filter
 chain.doFilter(request, response);

}

public void init(FilterConfig filterConfig) throws ServletException {

 this.filterConfig = filterConfig;
 this.encoding = filterConfig.getInitParameter("encoding");
 String value = filterConfig.getInitParameter("ignore");
 if (value == null)
  this.ignore = true;
 else if (value.equalsIgnoreCase("true"))
  this.ignore = true;
 else if (value.equalsIgnoreCase("yes"))
  this.ignore = true;
 else
  this.ignore = false;

}

protected String selectEncoding(ServletRequest request) {
 return (this.encoding);
}

} 
 
//==============================================================================xmlでは、WEB-INFの下にあります.//Webを構成します.xml
<filter>
 <filter-name>Set Character Encoding</filter-name>
 <filter-class>filters.SetCharacterEncodingFilter</filter-class>
 <init-param>
  <param-name>encoding</param-name>
  <param-value>GBK</param-value>
 </init-param>
</filter>

<filter-mapping>
 <filter-name>Set Character Encoding</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>