all gone

          all gone

          JSP 處理MySQL數(shù)據(jù)庫時(shí)的中文問題

          以前遇到JSP 處理MySQL數(shù)據(jù)庫時(shí)的中文問題時(shí),采取的是很笨的一種方法,直接用字符串編碼轉(zhuǎn)換函數(shù)進(jìn)行轉(zhuǎn)換,這次從網(wǎng)上搜了一下,找到了一個(gè)使用Filter的可行方法。在Tomcat 5.5+ MySQL4.0.16下通過。

          filter類源碼是從網(wǎng)上找的,如下
          /**
           *
           */
          package com.lzy;

          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;

          /**
           * @author lzy
           *
           */
          public class SetCharacterEncodingFilter implements Filter {
           
           protected String encoding = null;
              protected FilterConfig filterConfig = null;
              protected boolean ignore = true;


           /* (non-Javadoc)
            * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
            */
           public void init(FilterConfig filterConfig) throws ServletException {
            // TODO Auto-generated method stub
            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;


           }

           /* (non-Javadoc)
            * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
            */
           public void doFilter(ServletRequest request, ServletResponse response,
             FilterChain chain) throws IOException, ServletException {
            
            // TODO Auto-generated method stub
            if (ignore || (request.getCharacterEncoding() == null)) {
             String encoding = selectEncoding(request);
             if (encoding != null)
              request.setCharacterEncoding(encoding);
            }
            chain.doFilter(request, response);
           }

           /* (non-Javadoc)
            * @see javax.servlet.Filter#destroy()
            */
           public void destroy() {
            // TODO Auto-generated method stub
            
            this.encoding = null;
               this.filterConfig = null;


           }
           
            protected String selectEncoding(ServletRequest request) {

                   return (this.encoding);

               }


          }

          在web.xml 文件中作如下設(shè)置:(我使用的是Struts框架)
          <filter>
          <filter-name>Encoding</filter-name>
          <filter-class>com.lzy.SetCharacterEncodingFilter</filter-class>
          <init-param>
          <param-name>encoding</param-name>
          <param-value>GBK</param-value>
          </init-param>
          </filter>

          <filter-mapping>
          <filter-name>Encoding</filter-name>
          <servlet-name>action</servlet-name>
          </filter-mapping>
          <filter-mapping>
          <filter-name>Encoding</filter-name>
          <url-pattern>*.jsp</url-pattern>
          </filter-mapping>


          最后,連接數(shù)據(jù)庫時(shí),使用下面的url:
          jdbc:mysql://localhost:3306/數(shù)據(jù)庫名?useUnicode=true&characterEncoding=GBK

          posted on 2005-12-18 22:57 all gone 閱讀(485) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 商水县| 鄯善县| 睢宁县| 霸州市| 嘉兴市| 合山市| 南陵县| 湄潭县| 江达县| 右玉县| 武山县| 凉山| 垦利县| 禹城市| 福安市| 鞍山市| 诸暨市| 天镇县| 峨边| 沾益县| 嘉善县| 兴海县| 莒南县| 柞水县| 高州市| 元氏县| 玛曲县| 江永县| 寻甸| 安远县| 澄江县| 丹东市| 云安县| 扎囊县| 杭锦后旗| 会理县| 和田市| 喀喇| 娄烦县| 顺平县| 黎城县|