在项目中遇到了存储emoji(?)报错的情况,错误如下:
Incorrect string value: '\xF0\x9F\x98\x80' for column 'name' at row 1
我们的项目使用的是springboot2.4.8+mysql5.7
数据库字段的编码已经修改成utf8mb4,并且直接把emoji插入表是可以成功的,所以不是数据库编码的问题。
网上搜了一下资料,有两个解决方案:
SET NAMES utf8mb4
,这个会在每次执行sql前执行;为什么升级驱动类后可以了呢,我查看了mysql官网对驱动类的发行说明,发现5.1.47版本就已经解决了这个问题,原文如下:
浏览器翻译后: