如何把MySQL8.0默認字符集設(shè)置為utf8或utf8mb4的方式方法(只支持mysql8或以后版本)
[重要通告]如您遇疑難雜癥,本站支持知識付費業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時間哦!
UTF-8 編碼是一種變長的編碼機制,可以用1~4個字節(jié)存儲字符。但MySQL 中的 utf8 編碼并不是真正的 UTF-8,其最長只有3個字節(jié)。當遇到占4個字節(jié)的 UTF-8 編碼,例如 emoji 字符或者復(fù)雜的漢字,會導(dǎo)致存儲異常。
從 5.5.3 開始,MySQL 開始用 utf8mb4 編碼來實現(xiàn)完整的 UTF-8,其中 mb4 表示 most bytes 4,最多占用4個字節(jié)。從 8.0 之后,將會在某個版本開始用 utf8mb4 作為默認字符編碼。uft8mb4 表示用 UTF-8 編碼方案,每個字符最多占4個字節(jié);
因為歷史遺留問題,MySQL 中的 utf8 編碼并不是真正的 UTF-8,而是閹割版的,最長只有3個字節(jié)。當遇到占4個字節(jié)的 UTF-8 編碼,例如 emoji 表情字符或者復(fù)雜的漢字,會導(dǎo)致存儲異常。
關(guān)于MySQL中默認字符集utf8和utf8mb4有關(guān)設(shè)置
通過修改my.ini文件達到修改目的 MySQL 8.0.23的my.ini配置文件存儲位置;
注意事項:請將my.ini事先備份,避免由于文件錯誤造成MySQL無法使用
1.需要將MySQL80服務(wù)關(guān)閉,否者可能無法修改my.ini文件
2.在使用下面的的問件時請先備份原文件my.ini。
打開C:\ProgramData\MySQL\MySQL Server 8.0路徑下的my.ini配置文件
第一步:在[client]下將加入default-character-set=utf8mb4
第二步:在[mysql]下將# default-character-set=修改為default-character-set=utf8mb4
第三步:在[mysqld]下將# character-set-server=改為
character-set-client-handshake = FALSE character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
注意:MySQL 8.0.23的my.ini的配置文件被保存在C:\ProgramData\MySQL\MySQL Server 8.0路徑下,并不在8.0版本以前的C:\Program Files\MySQL\MySQL Server 8.0路徑下
mysql設(shè)置默認編碼為utf-8的方法:
1、使用文本編輯器打開my.ini配置文件;
2、找到mysqld模塊,添加配置【character_set_server=utf8】;
3、保存配置文件并重啟mysql服務(wù)即可。
創(chuàng)建數(shù)據(jù)庫時指定字符集為 utf8mb4,作者本人喜歡使用:可以用以下命令來創(chuàng)建;
CREATE DATABASE mydbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
備注:字符除了需要存儲,還需要排序或比較大小。推薦用 utf8mb4_unicode_ci
utf8老庫升級:
CREATE DATABASE`你的庫名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
新建utf8庫:
CREATE DATABASE mydbname CHARACTER SET utf8 COLLATE utf8_general_ci;
MySql utf8mb4 延伸閱讀:
utf8mb4 已成為 MySQL 8.0 的默認字符集,在MySQL 8.0.1及更高版本中將utf8mb4_0900_ai_ci 作為默認排序規(guī)則。
創(chuàng)建數(shù)據(jù)庫時,如果沒有指定字符集,會采用服務(wù)器的默認字符集。設(shè)置服務(wù)器默認字符集為 utf8mb4 可以提高便利性。
show variables like "%char%";
character_set_client:客戶端請求數(shù)據(jù)的字符集
character_set_connection:從客戶端接收到數(shù)據(jù),然后傳輸?shù)淖址?br />
character_set_database:默認數(shù)據(jù)庫的字符集,無論默認數(shù)據(jù)庫如何改變,都是這個字符集;如果沒有默認數(shù)據(jù)庫,那就使用 character_set_server指定的字符集,這個變量建議由系統(tǒng)自己管理,不要人為定義。
character_set_filesystem:把操作系統(tǒng)上的文件名轉(zhuǎn)化成此字符集,即把 character_set_client轉(zhuǎn)換
character_set_filesystem, 默認binary是不做任何轉(zhuǎn)換的
character_set_results:結(jié)果集的字符集
character_set_server:數(shù)據(jù)庫服務(wù)器的默認字符集
character_set_system:存儲系統(tǒng)元數(shù)據(jù)的字符集,總是 utf8,不需要設(shè)置;
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!