<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-67  評論-522  文章-0  trackbacks-0
        相信很多使用MySQL數據庫做開發的朋友,都或多或少的遇到過中文亂碼的問題。大象根據項目實踐,在此將自己的成功經驗總結拿出來和大家分享。
        我使用的MySQL數據庫版本是5.0.27,按以下幾點處理,可以很好的解決中文亂碼問題。

        1、數據庫安裝
        安裝數據庫時,有個服務器的字符集設置,這里不要使用默認的latin1字符集,而應該選擇utf8字符集。在創建表的時候,還應該設定默認字符集編碼為utf8
        2、數據庫配置文件
        假設你在數據庫安裝時,采用了默認的字符集設置,或是使用了gb2312gbk等等,我們可以通過修改MySQL根目錄下的my.ini文件來改變字符編碼。
        打開my.ini文件,修改下圖中畫紅線的部分。
    請注意是utf8,而不是utf-8或UTF-8
        
        第二個紅線部分的設置很關鍵,它主要用來指定表字段的默認字符集為utf8。大象試過,在所有設置都相同的情況下,這里如果保留默認的latin1,當在應用中向數據庫插入數據時,就會出現亂碼。而改成utf8則不會。
        3、數據庫工具
        我覺得工具的選擇很重要,現在關于MySQL的工具也有很多。我也用過很多,在這里我向大家推薦Navicat Lite for MySQL工具,界面如下
        
        界面簡潔,功能強大,特別是能很好的處理中文字符。相信大家都能很快上手。我目前使用的是8.1版。
        4、Eclipse工作空間
        如今使用Eclipse工具做Java開發的占絕大多數,那么為了避免中文亂碼的發生,Eclipse的工作空間也應該設置成UTF-8編碼。
        
        5、頁面字符編碼
        我們已經將數據庫與開發工具都統一成UTF-8的字符編碼,那么對于展示層的JSP,我們也應該進行相應的設置。
        JSP頁面頂部設置編碼格式

        <%@ page contentType="text/html;charset=UTF-8" %>
        head之間加入meta設置
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
        另外,大象建議表單提交采用post方式。
        6、數據庫連接
        連接數據庫的地址中我們也應該加入字符設置,請看下面藍色的字符。
        jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=UTF-8
        7、容器配置文件
        還有最重要的一個步驟不能忘記,就是要在web.xml中加入字符過濾器。
        <!-- Filter 定義  -->
        <!-- Character Encoding filter -->
        <filter>
            <filter-name>encodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <!-- Filter 映射 -->
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        這里用到的是Spring的編碼過濾器,我們可以直接拿來用。不過請注意forceEncoding這個參數,把它設置為true表示不管請求中的編碼是什么格式,都將強制采用encoding中設置的編碼方式。另外對于響應也將按照encoding指定的編碼進行設置。
        通過以上幾個步驟,應該可以完全解決使用MySQL數據庫所帶來的中文亂碼問題。如果你按照這些設置做過后還是出現了亂碼,請提出來,讓我們一起來解決。
        大象不建議大家為了實現中文問題而采取gb2312gbk等編碼方式,我們應該使用基于Unicode的編碼。而UTF-8是目前互聯網上使用最廣泛的一種Unicode的實現方式,特別是目前JavaEE的企業級項目,都是基于互聯網式的Web應用。所以我們應該使用這種統一的字符集編碼方式。另外,對于SQLServerOracle數據庫,不會出現像MySQL這樣的亂碼問題,但我們也應該堅持在開發過程中統一采用UTF-8的編碼方式。希望此文能對大家有所幫助。
        本文為菠蘿大象原創,如要轉載請注明出處。http://www.tkk7.com/bolo
    posted on 2010-04-05 16:37 菠蘿大象 閱讀(5942) 評論(17)  編輯  收藏 所屬分類: Database

    評論:
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2010-04-06 09:24 | E2
    這個也叫做完全的解決方案,圖片還要加上自己的標記,太那個了....  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2010-04-06 10:55 | 菠蘿大象
    @E2
    這是針對MySQL數據庫的中文編碼問題,按照這樣做,可以解決中文亂碼的問題,我沒有夸大,你覺得我哪里寫的不好,可以提出來,但這么模糊的說"這個也叫做完全解決方案",我就不太明白了。另外,圖片加上水印,是防盜轉,沒有別的意思。  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2010-04-06 13:49 | Aspen
    說白了,所有地方統一編碼。
      回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2010-04-06 13:56 | 菠蘿大象
    @Aspen
    可以這么說,我當時遇到的問題其實只有兩個。一是在my.ini文件的第二個字符集設置上,沒有改成utf8。另一個就是工具有問題,生成的數據庫和表對中文有BUG,改成Navicat,重新生成一遍就好了。  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案[未登錄] 2010-04-10 08:40 | roypayne
    寫的挺好的。鼓勵一下樓主。謝謝分享。

    另:有些人就會說風涼話。  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2010-04-10 23:15 | 菠蘿大象
    @roypayne
    謝謝支持,我是很用心在寫,也歡迎真正的批評指正,而不是無目的的拍磚。  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2010-09-10 15:43 | SoJog
    建議把背景換下,這個看著太花了  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2010-09-10 15:45 | 菠蘿大象
    @SoJog
    呃。。。還好吧,只是一個水印而已,而且很淺吶  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2010-09-10 15:55 | SoJog
    @菠蘿大象
    這個還好呀,SSH2 ANNOTATION那幾遍文章,汗。。。頭昏  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2010-09-10 16:01 | 菠蘿大象
    @SoJog
    啊,你千萬別暈,暈了我可沒醫藥費哦,呵呵。你就將就看吧,你不知道blogjava換圖片好麻煩的,如果不加水印,有些盜文者很可恥,不加轉載鏈接,這個我就很生氣了,我歡迎轉載,但不歡迎匿名轉載。  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2010-09-11 00:27 | zhhaojie
    樓主真是很用心,謝謝你  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2010-09-13 10:10 | 菠蘿大象
    @zhhaojie
    謝謝支持,我會努力的。  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2012-09-26 20:02 | luhong

    還是不行  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2012-09-26 20:03 | luhong
    以前解決過,現在又沒法弄了。。。只是更改了my.ini文件,我沒涉及到上層應用,就是在mysql dos client下插入查找數據,還是亂碼問題,開始latin,亂碼漢字是???,改成utf8,出現的更不知道是哪國繁體文  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2015-01-29 22:55 | wkl17
    mysql Ver 14.14 Distrib 5.5.34, for Win32 (x86)
    -------
    我直接在[mysqld]下添加
    default-character-set=utf8

    default-character-server=utf8
    ,但之后就無法啟動服務了..難道其他朋友修改my.ini后都能正常啟動??

    這是我執行 status命令后其中的幾行:
    Server characterset: latin1
    Db characterset: gbk
    Client characterset: gbk
    Conn. characterset: gbk  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2015-01-30 08:44 | 菠蘿大象
    @wkl17
    請你仔細看我文中寫的,我并沒有寫要添加default-character-set=utf8或default-character-server=utf8這些,我只寫了要改編碼。你怎么會添加呢?
    第一個地方要改的是[mysql],改它下面的default-character-set=utf8
    第二個地方[mysqld],這下面改character-set-server=utf8
    以下是我用status顯示的結果
    -------------------------------
    mysql Ver 14.14 Distrib 5.5.36, for Win32 (x86)

    Connection id: 1
    Current database:
    Current user: root@localhost
    SSL: Not in use
    Using delimiter: ;
    Server version: 5.5.36 MySQL Community Server (GPL)
    Protocol version: 10
    Connection: localhost via TCP/IP
    Server characterset: utf8
    Db characterset: utf8
    Client characterset: utf8
    Conn. characterset: utf8
    TCP port: 3306
    Uptime: 43 sec
    -----------------------------------

    你的很明顯是服務器端還是latin1字符集,而客戶端卻是gbk,你再好好檢查一下  回復  更多評論
      
    # re: JavaEE應用中MySQL中文亂碼完全解決方案 2015-05-24 01:27 | Jared_liu
    謝謝樓主分享,解決了亂碼問題  回復  更多評論
      
    主站蜘蛛池模板: 亚洲日本VA午夜在线电影| 亚洲天堂免费在线视频| 亚洲av无码国产精品色在线看不卡| 成年免费a级毛片| 青青草原精品国产亚洲av| 成人免费无码大片a毛片软件| 一级做a爰片久久毛片免费看 | 99精品视频在线视频免费观看| 亚洲娇小性xxxx| 亚洲中文字幕无码爆乳av中文| 未满十八18禁止免费无码网站| 亚洲GV天堂GV无码男同| 亚洲va国产va天堂va久久| 成人免费视频小说| 两个人看的www免费视频中文| 自拍偷区亚洲国内自拍| 久久精品国产精品亚洲精品| 午夜dj免费在线观看| 久久久国产精品福利免费| 久久久久久久久无码精品亚洲日韩| 亚洲精品午夜无码电影网| 成人免费无码大片a毛片软件| 久久免费视频99| 五月天婷婷免费视频| 精品亚洲成在人线AV无码| 国产AV无码专区亚洲AV手机麻豆| 夫妻免费无码V看片| 99精品国产成人a∨免费看| xxxx日本在线播放免费不卡| 在线综合亚洲欧洲综合网站| 亚洲国产成人精品不卡青青草原| 五月天婷亚洲天综合网精品偷| 青青青国产在线观看免费| 两个人看www免费视频| 国产成人亚洲综合在线| 亚洲一区二区三区在线网站| 久久久综合亚洲色一区二区三区| 九月婷婷亚洲综合在线| 四虎永久免费影院| 精品少妇人妻AV免费久久洗澡| 可以免费看黄的网站|