最近公司一個舊的專案需要支援 emoji 表情,一開始以為只要修改下資料庫的表格欄位就好,沒想到引發了一系列的問題。這裡總結下,以作備忘。
系統變數:
character_set_server: 預設的內部操作字元集
character_set_client:客戶端來源資料使用的字元集
character_set_connection:連接層字元集
character_set_results:查詢結果字元集
character_set_database: 目前選取資料庫的預設字元集
character_set_system: 系統元資料(欄位名稱等)字元集
02 MySQL 中的字元集轉換過程
##02 MySQL 中的字元集轉換過程
#MySQL Server收到請求時將請求資料從
;
使用表中欄位的CHARACTER SET 設定值;
若上述值不存在,則使用對應資料表的DEFAULT CHARACTER SET 設定值(MySQL擴展,非SQL標準);
若上述值不存在,則使用對應資料庫的DEFAULT CHARACTER SET 設定值;
03 MySQL 啟動設定檔
my.cnfdefault-character-set: 設定mysql 指令行連接的預設字元集
character-set-server: 設定係統內部操作字元集(即上文說到的character_set_server)collation_server: 設定係統預設字元集排序
常見的兩種設定字元集的方式
mysql:host=localhost;dbname=db_demo;charset=utf8mb4
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"
05 總結
,這個是剛需#一般
character_set_client
、character_set_connection
、 character_set_results
的字元集相同,且都為
等預設字元集的類型並沒有那麼重要,但最好還是保持一致
以上是關於MySQL字符集問題詳解(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!