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

原文鏈接:https://blog.csdn.net/sun8112133/article/details/79921734

本篇會簡單介紹在 MySQL 中關於 8個 character_set 變量的基本作用。

使用下列SQL語句可以查看 MySQL中8個 character_set 變量:

SHOW VARIABLES LIKE '%char%';

   

character_set 變量

8個 character_set 變量:
一、character_set_client
二、character_set_connection
三、character_set_database
四、character_set_filesystem
五、character_set_results
六、character_set_server
七、character_set_system
八、character_sets_dir

 


一、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

這個變量是字符集安裝的目錄。
在啓動mysql後,我們只關注下列變量是否符合我們的要求

    character_set_client
    character_set_connection
    character_set_database
    character_set_results
    character_set_server

下列三個系統變量我們不需要關心,不會影響亂碼等問題

    character_set_filesystem
    character_set_system
    character_sets_dir

更改以上字符集直接 set character_set_XXX = “gbk”;(XXX是寫以上的變量名)
藉助網上的一個完整的用戶請求的字符集轉換流程來更好的理解上述幾個變量:

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

字符集轉換流程

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