异常
SQL state [HY000]; error code [1366]
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xAD</...'
显示为某字段插入异常;而显示该字段的值为上面显示的字符
排查
经过排查发现mysql编码问题
'\xF0\x9F\x98\xAD</...'
可以发现该字符为一个4字节的十六进制的字符
mysql的字符集所支持的字节范围:
SHOW CHARACTER SET;
其中
utf8
最大支持3个字节的字符
utf8mb4
则最大支持4个字节字符
翻看了
mysql
官方version release notes
,可以发现:
在version 5.5.3
之后,增加了一种和utf-8
类似的字符集utf8mb4
,并且它的编码支持4个字节每个字符
解决
将对应列的字符集改成utf8mb4
再进行插入测试,发现插入成功;
结束