程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL亂碼處理及字符集相關介紹

MySQL亂碼處理及字符集相關介紹

編輯:MySQL綜合教程

        我們經常會遇到一些向MySQL數據庫中插入中文,但是select出來的時候,卻發現是亂碼的情況。如我們向表a出入這樣一段記錄:i

  a (,);

可能當你訪問它的時候,會發現他的結果變成如下圖所示:


        要解決字符集的問題,首先要知道現在的系統、數據庫、表、客戶端等使用什麼樣的字符集,以及系統支持什麼字符集等,下面介紹一些獲取相關信息的語句:

1.查看數據庫支持的所有字符集

show  ;或者show  ;

2.查看當前狀態,裡面當然包括字符集的設置:

status或者\s

3.查看系統字符集設置,包括所有的字符集設置:

show variables  ;

得出如何所示結果:

4.查看數據表中字符集設置:

show  columns  tablename;

5.查看數據庫編碼:

show   dbname;

        知道了怎麼查找字符集的相關信息之後,我們就要懂得怎麼在創建指定對象的時候,為該對象匹配相應的字符集。

1.服務器級:

在安裝MySQL時可以設置服務器的默認編碼格式,也可對my.ini做修改,修改[mysqld]裡面的character_set_server=utf8,則可設置character_set_server的值。

2.數據庫級:

      utf8;

3.表級:

   ``.`tb_name` (id ()  ,name () ) ENGINEInnoDB  CHARSETutf8;

從下圖可看出,定義表的默認字符集為utf8,即使character_set_database為gbk,但是表的列都未utf8

4.列級:

   ``.`tb_name` (   id ()  ,   name ()   utf8 );

從下圖可以看到,整個表的默認字符集為gbk,所以沒有指定字符集的列都用默認的字符集,而指定了字符集的列name,則使用指定的字符集utf8。

        如果已經是創建好的對象,那又應該如何處理呢。我們就應該對指定對象就行修改字符集的操作。

對於某一個連接來說,可以使用:

 NAMES  

相當於

 character_set_client  character_set_results  character_set_connection  charset_name;

另外、還可以修改配置文件,對[mysql]下增加default-character-set=utf8,配置成你想要的字符集。(個人嘗試在my.ini裡面配置過,沒有成效,不知道是不是被使用的客戶端想要的字符集給覆蓋掉了呢?)

   
       COLLATE collation_name]

最簡單的方法是直接改my.ini配置文件裡面[mysqld]的字段,增加character-set-server=gbk,然後重啟mysqld,則可改為你想要的字符集。

   

 {    } ( 
    

例如:

 ( 

 

  • 參考資料:

MySQL的Character Set Support:  http://dev.mysql.com/doc/refman/5.6/en/charset.html

mysql常用查看庫,表字符集命令:  http://bjlfp.blog.163.com/blog/static/773684612012298455765/

MySQL 插入數據時,中文亂碼問題的解決: http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved