开发过程中使用MySQL存储用户提交的emoji表情时,一开始报错:
Incorrect string value: '\xF0\x9F\x98\x80' for column 'comment' at row 1
经过上网一番搜索,发现UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。最后使用下面的方案把问题解决了:
1.修改数据库的以下配置并重启服务:
[mysqld]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4
2.修改表
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;