mysql插入emoji表情时,会出现Incorrect string value的错误
将对应列的字符集改成utf8mb4
Caused by: java.sql.SQLException: Incorrect string value: \'\\xF0\\x9F\\x98\\x84\' for column \'review\' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
原因:
UTF-8编码的字符可以时2个、3个、4个直接。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。
解决方案:
将Mysql的编码从utf8转换成utf8mb4。
操作:
1. 检查数据库编码设置
SHOW VARIABLES LIKE \'%character%\';
如果不是以上配置,修改mysql配置文件(windows:my.ini;linux:my.cnf)
character-set-server = utf8mb4
2. 重启mysql
3. 将数据库表编码转换成utf8mb4
ALTER TABLE "TABLE_NAME" CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
4. 将需要使用emoji的字段设置类型为
ALTER TABLE "TABLE_NAME" MODIFY COLUMN "COLUMN_NAME" varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;