潛心學習 技術強身

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            14 隨筆 :: 0 文章 :: 8 評論 :: 0 Trackbacks
              主要是mysql數據庫亂碼問題,關于網頁中的亂碼(JSP頁面亂碼,action亂碼)都好解決,只要頁面的編碼統一就可以了。我比較喜歡用UTF-8編碼,不是很喜歡GBK或GB2312編碼。
                關于JSP頁面及action只需添加一個EncodingFilter就可以了,代碼如下:
           1package cn.zhang.myznt.filter;
           2
           3import java.io.IOException;
           4
           5import javax.servlet.Filter;
           6import javax.servlet.FilterChain;
           7import javax.servlet.FilterConfig;
           8import javax.servlet.ServletException;
           9import javax.servlet.ServletRequest;
          10import javax.servlet.ServletResponse;
          11
          12public class EncodingFilter implements Filter {
          13    private String charset = null;
          14    public void destroy() {
          15
          16    }

          17
          18    public void doFilter(ServletRequest request, ServletResponse response,
          19            FilterChain chain) throws IOException, ServletException {
          20        request.setCharacterEncoding(this.charset);
          21        chain.doFilter(request, response);
          22
          23    }

          24
          25    public void init(FilterConfig arg0) throws ServletException {
          26        this.charset = arg0.getInitParameter("charset");
          27    }

          28
          29}

          30

          在web.xml中注冊這個Filter,注意他的位置必須放在需要調用action及jsp或其他頁面聲明之前
           1<filter>
           2        <filter-name>encoding</filter-name>
           3        <filter-class>cn.zhang.myznt.filter.EncodingFilter</filter-class>
           4        <init-param>
           5            <param-name>charset</param-name>
           6            <param-value>UTF-8</param-value>
           7        </init-param>
           8    </filter>
           9    <filter-mapping>
          10        <filter-name>encoding</filter-name>
          11        <url-pattern>/*</url-pattern>
          12    </filter-mapping>

          同時在連接mysql數據庫的時候也要改為jdbc:mysql://localhost:3306/mldn?useUnicode=true&amp;characterEncoding=utf-8 如果連接在java代碼中使用,請使用&,如果是在xml中使用請寫成&amp;。

              關于mysql的collation字符集和mysql的characterSet字符集問題,查了很多資料都說要設置成一樣,我想那只是針對如果你選GBK作為數據庫編碼的時候所用,但如果選用UTF8作為數據庫編碼的時候就不一定正確了。
              今天根據網上的資料將所有的characterSet設置成utf8(可用mysql> SHOW VARIABLES LIKE 'character_set_%';查看),一直在測試亂碼問題解決沒有。在測試過程發現傳遞的中文都是正確的,可就是在MySQL Client中查看的是亂碼,所以繼續找方法解決,但其實這個時候你插進去的中文已經是正常的了,只是在MySQL Client中顯示是亂碼。那么為什么會這樣?MySQL Client設置成UTF8的時候中文不能正常顯示,此時我們應該將charact_set_client :設置成gbk,這樣就可以正常顯示中文了。
              可以在my.ini中

          [mysql]

          default-character-set=gbk


          而下面的default-character-set=utf8,兩個default-character-set的設置是不一樣的。當然如果你選用gbk作為數據庫編碼,是需要設置成一樣的。
          posted on 2009-07-23 17:40 平濤 閱讀(528) 評論(0)  編輯  收藏 所屬分類: 學習問題

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 上林县| 光山县| 抚宁县| 南木林县| 沧州市| 商水县| 苏尼特右旗| 泽州县| 缙云县| 云浮市| 奉节县| 五指山市| 加查县| 屯昌县| 工布江达县| 吴堡县| 綦江县| 安陆市| 汕头市| 怀集县| 临漳县| 屏边| 黔西县| 安丘市| 泸水县| 安庆市| 墨竹工卡县| 铅山县| 昂仁县| 通辽市| 松滋市| 阿勒泰市| 定安县| 广安市| 新野县| 习水县| 洛浦县| 河西区| 台北县| 准格尔旗| 互助|