项目中使用Mysql数据库保存emoji表情时😂会报错:
Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8D' for column 'name'
原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。
Mysql的utf8编码并不是真正的UTF-8编码,Mysql的utf8最多只支持3个字节,而emoji表情、一些特殊的中文字符则需要4个字节才能存储, 因此才会报错。
解决办法
修改文件/etc/mysql/mysql.conf.d/mysqld.cnf
:
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci
重启mysql服务器:service mysql restart
即可