带表情字符插入mysql字段报错问题处理 Incorrect string value: ‘\xF0\xA5\x8C\x93\xE5\x85...‘ for column ‘nickNa

今天在处理数据的时候出现这个错误

Incorrect string value: '\xF0\xA5\x8C\x93\xE5\x85...' for column 'nickName' at row 126; nested exception is java.sql.SQLException: Incorrect string value: '\xF0\xA5\x8C\x93\xE5\x85...' for column 'nickName' at row 126

在网上搜了几个答案,告知的原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而MySQL的utf8编码最多3个字节,所以数据插不进去。


解决方案:将编码从utf8转换成utf8mb4。

这里一定要注意这个细节,我在解决的时候就出现了这个问题,自己也没注意到:就是在设置表的字符集后同时也要设置对应插入列的字符集

具体修改的sql如下所示:

Alter table `my_test`.`t_user_info`
charset=utf8mb4

Alter table `my_test`.`t_user_info`
change `nickName` `nickName` varchar(32) CHARSET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '昵称'

如果问题还未解决,保证参数设置如下所示,我的mysql配置信息这样问题就解决了。

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; 

确保这个配置项:character-set-server=utf8mb4

带表情字符插入mysql字段报错问题处理  Incorrect string value: ‘\xF0\xA5\x8C\x93\xE5\x85...‘ for column ‘nickNa

上一篇:MySQL报错:java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D\x0A...’的完全解决


下一篇:#mysql#mysql_set_character_set ‘utf8mb4‘ failed.