隨筆 - 3, 文章 - 152, 評(píng)論 - 17, 引用 - 0

          導(dǎo)航

          公告

          歡迎來到辰的blog

          發(fā)消息給我有事您Q我

          常用鏈接

          文章分類(153)

          搜索

          •  

          積分與排名

          • 積分 - 53383
          • 排名 - 951

          最新評(píng)論

          閱讀排行榜

          徹底解決Tomcat 5.0.19中文亂碼

          一、Include的頁(yè)面亂碼

            現(xiàn)象:include進(jìn)來的頁(yè)面出現(xiàn)亂碼,其它頁(yè)面正常。

            原因:Tomcat在缺省情況下使用ISO-8859-1編碼,但是在include時(shí)有時(shí)Tomcat不能正確根據(jù)外層.jsp文件的編碼解析include進(jìn)來的文件,造成include進(jìn)來的文件中的中文亂碼。

            解決:這兒可以有很多解決辦法,但是對(duì)于我們的中文環(huán)境,從根本上的解決辦法是將Tomcat 5.0.19的核心缺省編碼從ISO-8859-1修改為GBK 。可以在下面地址下載修改過的jar文件,

            jasper-compiler.jar,jasper-runtime.jar位于/common/lib下,其它位于/server/lib下,將新的.jar文件替代原.jar即可。
            
            二、提交的數(shù)據(jù)亂碼

            現(xiàn)象:通過表單提交的數(shù)據(jù)出現(xiàn)亂碼。

            原因:原因未明。可能是Tomcat在接收到請(qǐng)求后,并沒有能夠根據(jù)request中的信息提前正確的編碼方式。

            解決:可以添加一個(gè)設(shè)置字符集的Filter。

          //=================初學(xué)者注意,請(qǐng)將此文件放在WEB-INF\classes\filters下,
          //注意先以SetCharacterEncodingFilter.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);
          }

          }
          //==================這段代碼是我在網(wǎng)上摘錄的,因?yàn)椴恢匠鎏幩詿o法標(biāo)明作者
          //然后將下面<filter>開始的代碼加入到web.xml中,它位于WEB-INF下。
          //我的QQ:22070699
          //配置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>

          posted on 2005-02-15 11:29 閱讀(128) 評(píng)論(0)  編輯  收藏 所屬分類: J2ee

          主站蜘蛛池模板: 淮滨县| 巴中市| 台州市| 东兰县| 育儿| 凤阳县| 扎兰屯市| 陆良县| 凉山| 承德市| 乐清市| 章丘市| 双流县| 临澧县| 永川市| 盐边县| 湘阴县| 姜堰市| 平和县| 卓资县| 肃宁县| 南岸区| 南安市| 常山县| 文山县| 报价| 陕西省| 磴口县| 临桂县| 于田县| 福建省| 老河口市| 临泽县| 金寨县| 赤峰市| 于都县| 贵港市| 平果县| 黄梅县| 津市市| 光山县|