潛心學習 技術強身

            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 平濤 閱讀(524) 評論(0)  編輯  收藏 所屬分類: 學習問題

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


          網站導航:
           
          主站蜘蛛池模板: 固安县| 嘉祥县| 北碚区| 新丰县| 宁安市| 宜昌市| 洛扎县| 类乌齐县| 家居| 旬邑县| 昌乐县| 乡宁县| 精河县| 泸定县| 新乡市| 准格尔旗| 朝阳区| 芦溪县| 浪卡子县| 兴隆县| 郁南县| 北川| 东乡县| 灵台县| 南皮县| 浮山县| 祁门县| 华安县| 新野县| 阳新县| 邵阳县| 易门县| 彭州市| 邵东县| 昌乐县| 奉贤区| 册亨县| 诸城市| 观塘区| 海阳市| 建水县|