項目--解決MySQL數據庫插入中文亂碼

轉載自:http://blog.csdn.net/zzh920625/article/details/51226312php

情景再現】html

         如圖,在項目中使用MySQL數據庫,在作插入操做時,寫入英文字符沒有問題,可是插入中文的時候數據庫中的數據就像是這樣:java

解決辦法】mysql

     (1)無奈之餘,跟了一遍代碼,本覺得是在js方法向Controller傳值中引發了相似於」TypeError」的錯誤,發現跟到了Server端D層數據庫訪問操做都沒有發現有數據傳遞錯誤,So,學習新知識的機會又到了。sql

     (2)網上的資料顯示,鏈接mysql庫出現中文亂碼的問題緣由有以下幾個:數據庫

            1.mysql自己設定問題,例如還停留在latin1版本;編程

            2.table的語系設定問題(包含character與collation);服務器

            3.客戶端程式(例如PHP,Java)的連線語系設定問題;學習

 

       對於mysql自己設定的問題,若是是數據庫版本太低致使插入中文失敗,只須要到官網去升級就ok,畢竟mysql是免費的。編碼

       而更多的緣由則是:選用的編碼不對或者編碼不一致形成的。對於mysql數據庫和程序代碼的編碼方式的設定,下面詳細分析:

 

【具體策略】

       如上所述,解決中文亂碼的問題:

       首先明確MySQL的默認編碼是Latin1,不支持中文,要支持中午須要把數據庫的默認編碼修改成gbk或者utf8。

 

       1、數據庫端編碼設置

       一、須要以root用戶身份登錄才能夠查看數據庫編碼方式(以root用戶身份登錄的命令爲:>mysql -uroot –p,以後兩次輸入root用戶的密碼),查看數據庫的編碼方式命令爲:

>show variables like 'character%';

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database |latin1 |

| character_set_filesystem | binary |

| character_set_results |latin1 |

| character_set_server | latin1 |

| character_set_system |utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

          從以上信息可知數據庫的編碼爲latin1,須要修改成gbk或者是utf8(先以utf8爲例);

          其中,character_set_client爲客戶端編碼方式;

character_set_connection爲創建鏈接使用的編碼;

character_set_database數據庫的編碼;

character_set_results結果集的編碼;

character_set_server數據庫服務器的編碼;

 

          現將這幾種編碼方式所有改成」utf-8」:

          本文僅僅介紹一種最根本的方法:

(1)停止MySQL服務

(2)在MySQL的安裝目錄下找到my.ini,若是沒有就把my-medium.ini複製爲一個my.ini便可

(3)打開my.ini之後,在[client]和[mysqld]下面均加上default-character-set=utf8,保存並關閉

(4)啓動MySQL服務並查詢此時編碼方式:

mysql> show variables like 'character%'; #執行編碼顯示

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client |utf8 |

| character_set_connection | utf8|

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results |utf8 |

| character_set_server |utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

          當這八種編碼方式編程utf-8的時候,此時mysql數據庫便可插入中文

 

       2、程序端編碼設置

        若是僅僅是作了以上的操做,直接向數據庫中寫入中文沒有問題,可是從程序向數據庫寫入中文可能還會有問題,通過我上午的實驗,總結以下:

      (1)多是在HTML頁面中規定了程序的編碼方式,此時修改成」utf-8」便可。

               <%@ page language=」C#」 contentType=」text/html; charset=gbk」%>

      (2)Server端配置文件連接數據庫端:

               <server=192.168.22.***;userid=root;password=123;Charset=utf8;database=>

               加入charset的格式」utf-8」便可。若是沒有Charset的字段,手動添加便可。

       最好的方法就是整個解決方案裏搜索」Charset」,將其餘編碼方式都統一爲utf-8,由於要支持中午須要把數據庫的默認編碼修改成gbk或者utf8。

 

       總結兩點:一、Mysql編碼方式設置爲支持中文的utf8或者gbk; 二、程序的編碼方式設置成與數據庫同步的utf8或者gbk。

       至此,該問題解決完畢,

相關文章
相關標籤/搜索