BUG场景:
使用富文本编辑提交包含表情(emoji)的 html 字符串时,无法保存到mysql数据库。
问题描述
出现如下报错:
Incorrect string value: '\\xF0\\x9F\\x98\\x84</...' for column 'value' at row 1;
nested exception is java.sql.SQLException: Incorrect string value: '\\xF0\\x9F\\x98\\x84</...' for column 'value' at row 1"
原因分析:
数据库的字符集设置问题:mysql的utf8只支持 1 到 3 个字节,Emoji表情占4个字节,超过了mysql的utf8最大支持长度
解决方案:
将表yx_system_group_data的value字段字符集转换成utf8mb4 value字段排序规则utf8mb4_general_ci:
ALTER TABLE `yx_system_group_data` MODIFY COLUMN `value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;