想要mysql表支持emoji,需要設(shè)置表編碼為utf8mb4
CREATE TABLE `sample` (
`date` char(10) DEFAULT NULL,
`w1` varchar(50) DEFAULT NULL,
`w2` varchar(255) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4
mysql的字符集的作用域有三個(gè)層級(jí)一個(gè)數(shù)據(jù)庫級(jí),一個(gè)是表級(jí),一個(gè)是列級(jí)(字段級(jí)別的)。優(yōu)先級(jí)是:列級(jí)>表級(jí)>數(shù)據(jù)庫級(jí),表編碼無法修改的情況下可以設(shè)置字段編碼
alter table admin modify w2 varchar(255) charset utf8mb4;
以上修改完成發(fā)現(xiàn)通過Load導(dǎo)入的數(shù)據(jù)還是亂碼,但是手動(dòng)修改的數(shù)據(jù)可以支持
update sample set w2 = '惹不起我躲得起??';
原因是不僅僅表要修改,連接的客戶端也需要修改,執(zhí)行的命令也需要設(shè)置編碼格式
set names utf8mb4;--緊設(shè)置這個(gè)地方不起作用
delete from sample where date = '${excuDate}';
load data local infile 'rs/sample.txt' into table sample character set utf8mb4;-- 關(guān)鍵是此處