保存emoji表情错误

首先错误表现,抛出业务层报错之外,根源的数据库错误是:

sql 错误码 1366 字符集相关错误。

uncategorized SQLException;
SQL state [HY000]; 
error code [1366]; 
Incorrect string value: '\xF0\x9F\x86\x97\xE2\x88...' for column 'body' at row 1; 
nested exception is java.sql.SQLException: Incorrect string value: '\xF0\x9F\x86\x97\xE2\x88...' for column 'body' at row 1

查了下资料:

在mysql数据库中执行show character set,可以看到不同的字符集的最大长度不同。

1573198753280

虽然我从前台到后台,从网页到服务器再到数据库 都用的UTF-8 但是奈何输入法中的表情是4字节,超过了utf8 字符集 默认字符序(Collation)的3字节,所以出现报错。

另外:如果插入字符集和数据库字符集不同也会出现这个错误,查看字段字符集方式:

show full columns from blog;

1573198950367

 解决方式:

因为我只是随手打一个表情玩,所以把表情删了就好了。

完整解决方案: 主要就是修改数据库和JDBC链接 支持 utf8mb4

mysql保存不了微信表情符emoji问题解决方案

版权声明:本文为songyanrumo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/songyanrumo/p/12373741.html