mysql編碼設定

來源:互聯網
上載者:User

標籤:

一:mysql字元集mysql的字元集支援(Character Set Support)有兩個類型:字元集(Character set)和串連校對(Collation)。對於字元集的支援細化到四個層次: 伺服器(server),資料庫(database),資料表(table)和串連(connection)。mysql對於字元集的指定可以細化到一個資料庫,一張表,一列。一般的程式在建立資料庫和資料表時並沒有使用那麼複雜的配置,它們用的是預設的配置(1)編譯mysql時,預設的字元集是 latin1;
(2)安裝mysql時,可以在設定檔 (my.ini) 中指定一個預設的的字元集,如果沒指定這個值採用預設的;
(3)啟動mysql時,可以在命令列參數中指定預設的的字元集,如果沒指定則繼承自設定檔中的配置,此時 character_set_server 被設定為這個預設的字元集;
(4)當建立一個新的資料庫時,除非明確指定,這個資料庫的字元集被預設設定為character_set_server;
(5)當選定了一個資料庫時,character_set_database 被設定為這個資料庫預設的字元集;
(6)在這個資料庫裡建立一張表時,表預設的字元集被設定為 character_set_database,也就是這個資料庫預設的字元集;
(7)當在表內設定一欄時,除非明確指定,否則此欄預設的字元集就是表預設的字元集;
如果什麼地方都不修改,那麼所有的資料庫的所有表的所有欄位的都用 latin1 儲存。所以mysql的預設編碼是Latin1,不支援中文,要支援中文需要把資料庫的預設編碼修改為gbk或者utf8。

二:mysql亂碼原因:

       由以上可知:1.server本身設定,例如編碼還在使用latin12.資料表和欄位的編碼設定問題(包含character與collation)3.用戶端程式(例如php)的連線語系設定問題  注意:GBK與GB2312的區別就在於:GBK能比GB2312顯示更多的字元,要顯示簡體碼的繁體字,就只能用GBK。 三:編碼查詢    查看資料庫的編碼方式命令為: 
 1 mysql>show variables like ‘character%‘;  2 +--------------------------+----------------------------+ 3 | Variable_name | Value | 4 +--------------------------+----------------------------+ 5 | character_set_client | latin1 | 6 | character_set_connection | latin1 | 7 | character_set_database | latin1 | 8 | character_set_filesystem | binary | 9 | character_set_results | latin1 |10 | character_set_server | latin1 |11 | character_set_system | utf8 |12 | character_sets_dir | /usr/share/mysql/charsets/ |13 +--------------------------+----------------------------+、15 mysql> show variables like ‘collation%‘;(或者使用 >show variables like ‘collation%‘;)16 +----------------------+-------------------+17 | Variable_name | Value |18 +----------------------+-----------------------+19 | collation_connection | latin1_swedish_ci |20 | collation_database   | latin1_swedish_ci |21 | collation_server       | latin1_swedish_ci |22 +----------------------+-----------------------+        
四:編碼方式的修改   其中:   character_set_client          為用戶端編碼方式;              character_set_connection   為建立串連使用的編碼;
              character_set_database      資料庫的編碼;
              character_set_results         結果集的編碼;
              character_set_server          資料庫伺服器的編碼;   外部存取資料亂碼的問題就出在這個connection串連層上,解決方案是在發送查詢前執行一下下面這句:    SET names utf8   相當於: SET character_set_client          =‘utf8‘;
              SET character_set_connection  =‘utf8‘;              SET character_set_results        =‘utf8‘;   修改後可以解決大部分的編碼問題。
   還有一種最簡單的修改方法,就是修改mysql的my.ini(linux系統為my.cnf)檔案中的字元集索引值, 
          在[client]下面加上
          default-character-set = utf8
          在[mysqld]下面加上
          character_set_server =   utf8
          default-character-set = utf8
          character-set-server = utf8
          collation-server = latin1_swedish_ci
          init_connect = ‘SET collation_connection = utf8_general_ci‘
          init_connect = ‘SET NAMES utf8‘      
   修改完後,重啟mysql的服務,service mysql restart
五:避免建立資料庫及表出現中文亂碼和查看編碼方法
   1、建立資料庫的時候:
1 CREATE DATABASE `datatest`2 CHARACTER SET ‘utf8‘3 COLLATE ‘utf8_general_ci‘;
   2、建表的時候
1 CREATE TABLE `database_user` (2    `id`        varchar(40) NOT NULL default ‘‘,3    `name`  varchar(40) NOT NULL default ‘‘,4  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
   如果是已經建立的資料庫可以使用以下修改   1.修改資料庫的編碼     將資料庫(test)的編碼方式修改為utf8,如:
1 ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; 
   2.修改表的編碼    將表(test)的編碼方式修改為utf8,如:
1  ALTER TABLE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; 
   3.修改欄位的編碼    將表(test)中欄位(name)的編碼方式修改為utf8,如:
1 ALTER TABLE `test` CHANGE `name` `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE  utf8_bin NOT NULL; 

 

mysql編碼設定

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.