日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

徹底解決Tomcat 5.0.19的中文亂碼問題

 Joshua 2006-01-16

一、Include的頁面亂碼


現象:include進來的頁面出現亂碼,其它頁面正常。
原因:Tomcat在缺省情況下使用ISO-8859-1編碼,但是在include時有時Tomcat不能正確根據外層.jsp文件的編碼解析include進來的文件,造成include進來的文件中的中文亂碼。
解決:這兒可以有很多解決辦法,但是對于我們的中文環(huán)境,從根本上的解決辦法是將Tomcat 5.0.19的核心缺省編碼從ISO-8859-1修改為GBK ??梢栽谙旅娴刂废螺d修改過的jar文件,
    右擊保存
jasper-compiler.jar,jasper-runtime.jar位于/common/lib下,其它位于/server/lib下,將新的.jar文件替代原.jar即可。

二、提交的數據亂碼


現象:通過表單提交的數據出現亂碼。
原因:原因未明??赡苁荰omcat在接收到請求后,并沒有能夠根據request中的信息提前正確的編碼方式。
解決:可以添加一個設置字符集的Filter。

  1. package filters;
  2. import java.io.IOException;
  3. import javax.servlet.Filter;
  4. import javax.servlet.FilterChain;
  5. import javax.servlet.FilterConfig;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.ServletRequest;
  8. import javax.servlet.ServletResponse;
  9. import javax.servlet.UnavailableException;
  10. public class SetCharacterEncodingFilter implements Filter {
  11.     protected String encoding = null;
  12.     protected FilterConfig filterConfig = null;
  13.     protected boolean ignore = true;
  14.     public void destroy() {
  15.         this.encoding = null;
  16.         this.filterConfig = null;
  17.     }
  18.     public void doFilter(ServletRequest request, ServletResponse response,
  19.                          FilterChain chain)
  20.     throws IOExceptionServletException {
  21.         // Conditionally select and set the character encoding to be used
  22.         if (ignore || (request.getCharacterEncoding() == null)) {
  23.             String encoding = selectEncoding(request);
  24.             if (encoding != null)
  25.                 request.setCharacterEncoding(encoding);
  26.         }
  27.     // Pass control on to the next filter
  28.         chain.doFilter(request, response);
  29.     }
  30.     public void init(FilterConfig filterConfig) throws ServletException {
  31.     this.filterConfig = filterConfig;
  32.         this.encoding = filterConfig.getInitParameter("encoding");
  33.         String value = filterConfig.getInitParameter("ignore");
  34.         if (value == null)
  35.             this.ignore = true;
  36.         else if (value.equalsIgnoreCase("true"))
  37.             this.ignore = true;
  38.         else if (value.equalsIgnoreCase("yes"))
  39.             this.ignore = true;
  40.         else
  41.             this.ignore = false;
  42.     }
  43.     protected String selectEncoding(ServletRequest request) {
  44.         return (this.encoding);
  45.     }
  46. }


配置web.xml

[pre]    <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>[/pre]

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多