正文
Mysql 保存emoji表情报错
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
保存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 ,可以看到不同的字符集的最大长度不同。
虽然我从前台到后台,从网页到服务器再到数据库 都用的UTF-8 但是奈何输入法中的表情是4字节,超过了 utf8 字符集 默认字符序 (Collation)的3字节,所以出现报错。
另外:如果插入字符集和数据库字符集不同也会出现这个错误,查看字段字符集方式:
show full columns from blog;
解决方式:
因为我只是随手打一个表情玩,所以把表情删了就好了。
完整解决方案: 主要就是修改数据库和JDBC链接 支持 utf8mb4
mysql保存不了微信表情符emoji问题解决方案