https://blog.csdn.net/sun8112133/article/details/79921734
本篇會簡單介紹在 MySQL 中關於 8個 character_set 變量的基本作用。
使用下列SQL語句可以查看 MySQL中8個 character_set 變量
SHOW VARIABLES LIKE '%char%';
1
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
---------------------
作者:小異常
來源:CSDN
原文:https://blog.csdn.net/sun8112133/article/details/79921734
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!