1. 程式人生 > >MySQL 設定資料表編碼

MySQL 設定資料表編碼

     MySQL 4.1的字符集支援(Character Set Support)有兩個方面:字符集(Character set)和排序方式(Collation)。對於字符集的支援細化到四個層次: 伺服器(server),資料庫(database),資料表(table)和連線(connection)。 

    檢視系統的字符集和排序方式的設定可以通過下面的兩條命令mysql> status 。 
mysql> SHOW VARIABLES LIKE 'character_set_%'; 
+--------------------------+----------------------------+ 
| Variable_name | Value | 
+--------------------------+----------------------------+ 
| character_set_client | latin1 | 
| character_set_connection | latin1 | 
| character_set_database | latin1 | 
| character_set_results | latin1 | 
| character_set_server | latin1 | 
| character_set_system | utf8 | 
| character_sets_dir | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 
7 rows in set (0.00 sec) 

mysql> SHOW VARIABLES LIKE 'collation_%'; 

+----------------------+-------------------+ 
| Variable_name | Value | 
+----------------------+-------------------+ 
| collation_connection | latin1_swedish_ci | 
| collation_database | latin1_swedish_ci | 
| collation_server | latin1_swedish_ci | 
+----------------------+-------------------+ 
3 rows in set (0.00 sec) 

     上面列出的值就是系統的預設值。(很奇怪系統怎麼預設是latin1的瑞典語排序方式)... 

      當我們按照原來的方式通過PHP存取MySQL資料庫時,就算設定了表的預設字符集為utf8並且通過UTF-8編碼傳送查詢,你會發現存入資料庫的仍然是亂碼。問題就出在這個connection連線層上。解決方法是在傳送查詢前執行一下下面這句: