1. 程式人生 > >mysql設定utf8mb4字元編碼

mysql設定utf8mb4字元編碼

一、utf8和utf8mb4字元編碼

二、檢視mysql資料庫編碼

1.檢視編碼

#顯示所有編碼和字元校對的引數
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

總共有以下這些項:

Variable_name Value
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8mb4
character_set_system utf8
collation_connection utf8mb4_unicode_ci
collation_database utf8mb4_unicode_ci
collation_server utf8mb4_unicode_ci

這裡寫圖片描述

1、character_set_client
  主要用來設定客戶端使用的字符集。

2、character_set_connection
  主要用來設定連線資料庫時的字符集,如果程式中沒有指明連線資料庫使用的字符集型別則按照這個字符集設定。

3、character_set_database
  主要用來設定預設建立資料庫的編碼格式,如果在建立資料庫時沒有設定編碼格式,就按照這個格式設定。

4
、character_set_filesystem   檔案系統的編碼格式,把作業系統上的檔名轉化成此字符集,即把 character_set_client轉換character_set_filesystem, 預設binary是不做任何轉換的。 5、character_set_results   資料庫給客戶端返回時使用的編碼格式,如果沒有指明,使用伺服器預設的編碼格式。 6、character_set_server   伺服器安裝時指定的預設編碼格式,這個變數建議由系統自己管理,不要人為定義。 7、character_set_system   資料庫系統使用的編碼格式,這個值一直是utf8,不需要設定,它是為儲存系統元資料的編碼格式。 8、character_sets_dir   這個變數是字符集安裝的目錄。

我們只關注下列變數是否符合我們的要求
character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
下列三個系統變數我們不需要關心,不會影響亂碼等問題
character_set_filesystem
character_set_system
character_sets_dir

三、修改編碼為utf8mb4

修改my.cnf檔案。加入以下內容,然後重啟資料庫:systemctl restart mysqld

[mysqld]
character-set-server=utf8mb4

[mysql]
default-character-set=utf8mb4

[client]
default-character-set=utf8mb4

四、已有的庫和表更改為utf8mb4

以上方式更改編碼對於已有的庫和表是不產生影響的,需要我們單獨進行轉換。

#更改資料庫編碼:
ALTER DATABASE 資料庫名 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

#更改表編碼:
ALTER TABLE 表名CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 
如有必要,還可以更改列的編碼

參考:建立支援emoji表情的MySQL資料庫(utf8mb4)