MySQL | 關於MySQL中的8個 character_set 變量說明

一、查看character_set 變量

show variables like '%char%';

二、對8個變量解釋

變量名 解釋
character_set_client 主要用來設置客戶端使用的字符集。
character_set_connection 主要用來設置連接數據庫時的字符集,如果程序中沒有指明連接數據庫使用的字符集類型則按照這個字符集設置。
character_set_database 主要用來設置默認創建數據庫的編碼格式,如果在創建數據庫時沒有設置編碼格式,就按照這個格式設置。
character_set_filesystem 文件系統的編碼格式,把操作系統上的文件名轉化成此字符集,即把 character_set_client轉換character_set_filesystem, 默認binary是不做任何轉換的。
character_set_results 數據庫給客戶端返回時使用的編碼格式,如果沒有指明,使用服務器默認的編碼格式。
character_set_server 服務器安裝時指定的默認編碼格式,這個變量建議由系統自己管理,不要人爲定義。
character_set_system 數據庫系統使用的編碼格式,這個值一直是utf8,不需要設置,它是爲存儲系統元數據的編碼格式。
character_sets_dir 這個變量是字符集安裝的目錄。

以上這些參數如何起作用:

1.庫、表、列字符集的由來

  ①建庫時,若未明確指定字符集,則採用character_set_server指定的字符集。

  ②建表時,若未明確指定字符集,則採用當前庫所採用的字符集。

  ③新增時,修改表字段時,若未明確指定字符集,則採用當前表所採用的字符集。

2.更新、查詢涉及到得字符集變量

  更新流程字符集轉換過程:character_set_client-->character_set_connection-->表字符集。

  查詢流程字符集轉換過程:表字符集-->character_set_result

3.character_set_database

  當前默認數據庫的字符集,比如執行use xxx後,當前數據庫變爲xxx,若xxx的字符集爲utf8,那麼此變量值就變爲utf8(供系統設置,無需人工設置)。

三、更改上述字符集

set character_set_XXX = “utf8”;

//xxx:是變量名,選擇自己需要修改的補充。

四、MySQL字符編碼轉換原理

mysql Server收到請求時將請求數據從 character_set_client 轉換爲 character_set_connection
進行內部操作前將請求數據從 character_set_connection 轉換爲內部操作字符集,步驟如下 
  A. 使用每個數據字段的 CHARACTER SET 設定值; 
  B. 若上述值不存在,則使用對應數據表的字符集設定值 
  C. 若上述值不存在,則使用對應數據庫的字符集設定值; 
  D. 若上述值不存在,則使用 character_set_server 設定值。
最後將操作結果從內部操作字符集轉換爲 character_set_results


友情參考:MySQL之字符集-校對規則 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章