潛心學(xué)習(xí) 技術(shù)強(qiáng)身

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            14 隨筆 :: 0 文章 :: 8 評(píng)論 :: 0 Trackbacks
              主要是mysql數(shù)據(jù)庫(kù)亂碼問(wèn)題,關(guān)于網(wǎng)頁(yè)中的亂碼(JSP頁(yè)面亂碼,action亂碼)都好解決,只要頁(yè)面的編碼統(tǒng)一就可以了。我比較喜歡用UTF-8編碼,不是很喜歡GBK或GB2312編碼。
                關(guān)于JSP頁(yè)面及action只需添加一個(gè)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中注冊(cè)這個(gè)Filter,注意他的位置必須放在需要調(diào)用action及jsp或其他頁(yè)面聲明之前
           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>

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

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

          [mysql]

          default-character-set=gbk


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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 鄂伦春自治旗| 通山县| 赞皇县| 怀安县| 甘肃省| 天镇县| 祁门县| 涿鹿县| 辽宁省| 榆社县| 新乡县| 惠州市| 南丹县| 比如县| 天气| 巴林左旗| 濮阳市| 台山市| 平江县| 南昌县| 嘉荫县| 寻甸| 共和县| 方城县| 车致| 枣庄市| 武威市| 阳新县| 漾濞| 淅川县| 吴旗县| 峨眉山市| 荣昌县| 大名县| 天台县| 西平县| 南宁市| 遵义市| 金沙县| 夹江县| 贵阳市|