mysql导入emoji数据乱码
2020-09-02 本文已影响0人
大闪电啊
想要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;-- 关键是此处