MySql:charset和collation的設置


From: http://www.2cto.com/database/201302/189920.html

MySql:charset和collation的設置
 
charset 和 collation 有多個級別的設置:服務器級、數據庫級、表級、列級和連接級 
  www.2cto.com  
1.服務器級 
  查看設置:show global variables like 'character_set_server'; 和 show global variables like 'collation_server'; 
  修改設置:在OPTION FILE (/etc/mysql/my.cnf)里設置: 
   [mysqld] 
    character_set_server=utf8 
    collation_server=utf8_general_ci 
 
2. 數據庫級 
   查看設置:select * from information_schema.schemata where schema_name = 'cookbook'; 
   設置: 
     1.若沒有顯式設置,則自動使用服務器級的配置 
     2.顯式設置:在創建庫時指定 
       create database playUtf8  DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; 
  www.2cto.com  
3.表級 
   查看設置:show create table course; 
   設置: 
     1.若沒有顯式設置,則自動使用數據庫級的配置 
     2.顯式設置:在創建表時指定 
       create table utf ( id int ) default charset=utf8 default collate=utf8_bin; 
 
4.列級 
   查看設置:show create table course; 
   設置: 
     1.若沒有顯式設置,則自動使用表級的配置 
     2.顯式設置: 
 
     CREATE TABLE Table1(column1 VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_german1_ci); 
 
5.連接級別 
  查看設置: 
     show variables like 'character_set_client';  # 服務端使用這個編碼來理解客戶端發來的statements 
     show variables like 'character_set_connection' ; # 我還不知道什么意思,等看了mysql 源碼再說 
     show variables like 'character_set_results'; # 服務端使用這個編碼回送結果集和錯誤信息 
  設置: 
     客戶端在連接時可以指定這些參數;同時,服務端也提供了一個Global范圍的值,客戶端未指定這些參數時,服務端就使用這個Global值。這個global值怎么設置的? 我查遍了很多文檔,似乎還沒看到設置的辦法 (有人說通過my.cnf,或者在啟動 mysqld時指定命令行參數,其實都是錯的) 
 
附:connector/j傳輸SQL時用什么編碼? 
  答案: "The character encoding between client and server is automatically detected upon connection. The encoding used by the driver is specified on the server using the character_set_server system variable for server versions 4.1.0 and newer." 
   也就是說,是在連接時查詢服務器端的character_set_server值,再確定連接將使用的編碼。 
   不過,官方文檔還說,"要想覆蓋客戶端上的自動檢測編碼功能,可在用於連接到服務器的URL中使用“characterEncoding”屬性。"
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM