往数据库写入表情的时候遇到的问题,如下报错:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8F\xF0\x9F...' for column 'params' at row 1
报错的原因在于: MySQL中 utf8 的编码格式最多会用 3 个字节来存储一个字节,而如果一个字符超过的 4个字节,那么在写入数据库时就会报出上面的错误。 比如这个 👇 这个表情包,是需要 4 个字节存储。
Mysql 客户端,通过下面语句查看
select * from information_schema.CHARACTER_SETS where CHARACTER_SET_NAME like 'utf8%';
显示的结果
解决方法:
通过 Mysql 命令修改指定字段的编码方式
alter table 表名 modify column 字段名 字段类型 character set utf8mb4 collate utf8mb4_unicode_ci;
修改后可以通过下面语句来查看表的结构
show create table 表名
参考链接
https://blog.youkuaiyun.com/xj13829061922/article/details/106123694/