mysql导入emoji数据乱码

想要mysql表支持emoji,需要设置表编码为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的字符集的作用域有三个层级一个数据库级,一个是表级,一个是列级(字段级别的)。优先级是:列级>表级>数据库级,表编码无法修改的情况下可以设置字段编码

alter table admin modify w2 varchar(255) charset utf8mb4;

以上修改完成发现通过Load导入的数据还是乱码,但是手动修改的数据可以支持

update sample set w2 = '惹不起我躲得起';

原因是不仅仅表要修改,连接的客户端也需要修改,执行的命令也需要设置编码格式

set names utf8mb4;--紧设置这个地方不起作用
delete from sample where date = '${excuDate}';
load data local infile 'rs/sample.txt'  into table sample character set utf8mb4;-- 关键是此处

你可能感兴趣的:(mysql导入emoji数据乱码)