mysql之所以会出现这个问题,是因为mysql的utf8并不是标准的utf8,它只有三个字节,保存不了4个字节的内容。
解决方案:
1. 更改字段编码类型为utf8mb4
ALTER TABLE `表名`
MODIFY COLUMN `字段名` varchar(50) CHARACTER SET utf8mb4 NULL DEFAULT NULL COMMENT '注释';
2.更改数据库连接池配置,设置连接初始化语句“set names utf8mb4;” 以下是druid连接池的配置:
<property name="connectionInitSqls" value="set names utf8mb4;"/>
3. 设置jdbc url连接参数characterEncoding=utf-8
jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
还有一种方式,不需要设置第二步,只需要将数据库的:
character_set_client、character_set_connection、character_set_results
这三个参数的编码设置为utf8mb4即可;
执行以下sql:
set character_set_client='utf8mb4';
set character_set_connection = 'utf8mb4';
set character_set_results = 'utf8mb4';
show variables like 'character%';
执行结果:
另外需要获取表情符号做测试的同学可以去下面这个网页上去复制: