MySQL字符集與校對
一、什麽是字符集與校對
1.字符集與校對
字符集是指一種從二進制編碼到某種字符符號的映射。
校隊是指一組用於某個字符集的配許規則。
2.utf8與utf8mb4
標準的UTF-8字符集編碼是可以使用1-4個字節去編碼21位字符,這幾乎包含了世界上所有能看見的語言。
MySQL裏面實現的utf8最長使用3個字符,包含了大多數字符但並不是所有。例如emoji和一些不常用的漢字,如“墅”,這些需要四個字節才能編碼的就不支持。
MySQL在5.5.3之後增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來兼容四字節的unicode。好在utf8mb4是utf8的超集,除了將編碼改為utf8mb4外不需要做其他轉換。建議選用utf8mb4的編碼。
二、如何設置字符集與校隊
數據庫默認字符集設置:character_set_server
表的字符集設置:將根據數據庫的字符集設置來指定這個表的字符集
列的字符集設置:將根據表的設置來指定列的字符集設置
註意:真正存放數據的是列,所以更高“階梯”的設置只是制定默認值。一個表的默認字符集設置,無法影響存儲在這個表中某個列的值。只有當創建列,而沒為列有指定字符集的時候,表的默認字符集才會在列上生效。
1.查看、修改數據庫字符集與校對
1)查看
SHOW VARIABLES WHERE Variable_name LIKE ‘character\_set\_%‘ OR Variable_name LIKE ‘collation%‘;
2)修改
在配置文件中修改
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
2.查看、修改指定數據庫的字符集與校對
1)查看
SHOW CREATE DATABASE dbname;
2)修改
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
3.查看、修改表的字符集與校對
1)查看
SHOW CREATE TABLE tbl_name;
2)修改
修改表的字符集與校隊
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
修改表與列的字符集與校對
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...] ;
4.查看、修改列的字符集與校對
1)查看
SHOW FULL COLUMNS FROM tbl_name;
2)修改
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
MySQL字符集與校對