對于MySQL字符集問題詳細說明(圖)
發表時間:2023-09-10 來源:明輝站整理相關軟件相關文章人氣:
[摘要]最近公司一個舊的項目需要支持 emoji 表情,一開始以為只要修改下數據庫的表字段就好,沒想到引發了一系列的問題。這里總結下,以作備忘。01 MySQL 字符集設置系統變量:character_set_server: 默認的內部操作字符集character_set_client: 客戶端來源數據使...
最近公司一個舊的項目需要支持 emoji 表情,一開始以為只要修改下數據庫的表字段就好,沒想到引發了一系列的問題。這里總結下,以作備忘。
01 MySQL 字符集設置

character_set_server: 默認的內部操作字符集
character_set_client: 客戶端來源數據使用的字符集
character_set_connection:連接層字符集
character_set_results: 查詢結果字符集
character_set_database: 當前選中數據庫的默認字符集
character_set_system: 系統元數據(字段名等)字符集
02 MySQL 中的字符集轉換過程
MySQL Server收到請求時將請求數據從 character_set_client
轉換為character_set_connection
;
進行內部操作前將請求數據從 character_set_connection
轉換為內部操作字符集,其確定方法如下:
使用表中字段的 CHARACTER SET 設定值;
若上述值不存在,則使用對應數據表的 DEFAULT CHARACTER SET 設定值(MySQL擴展,非SQL標準);
若上述值不存在,則使用對應數據庫的 DEFAULT CHARACTER SET 設定值;
若上述值不存在,則使用 character_set_server
設定值。
將操作結果從內部操作字符集轉換為 character_set_results
, 響應請求。
03 MySQL 啟動配置文件 my.cnf

default-character-set: 設置 mysql 命令行連接的默認字符集
character-set-server: 設置系統內部操作字符集(即上文說到的character_set_server)
collation_server: 設置系統默認字符集排序
04 PHP連接 MySQL(以PDO連接方式為例)
常見的兩種設置字符集的方式
05 總結
數據表字段的字符集需要是utf8mb4
,這個是剛需
一般 character_set_client
、character_set_connection
、character_set_results
的字符集相同,且都為utf8mb4
(這三個參數默認都是utf8mb4
,如果不是,是實現不了 emoji 表情的,原因參照字符集轉換過程)。
連接數據庫的字符集也需要是utf8mb4
character_set_server
、character_set_database
等默認字符集的類型并沒有那么重要,但最好還是保持一致
TP 的坑果然是多,遠離TP
以上就是關于MySQL字符集問題詳解(圖)的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。