MYSQL插入emoji:java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x94\xA5’ for column
背景
今天MySQL报了一个错: Incorrect string value: ‘\xF0\x9F\x90\xA2’ for column ‘xxx’ at row 1
原因是插入的值是emoji,而我MYSQL一如既往的用了utf8
utf-8编码的一个字符最多只能存储3个字节,但一个emoji表情为4个字节,所以utf8不支持存储emoji表情
解决方法
- MYSQL5.7以上的直接把数据库表的编码格式改成
utf8mb4
,utf8mb4
是utf-8
的超集,注意把所有表都要改,不要只改一个表,不然会影响left join的效率
ALTER TABLE table_name CONVERT TO CHARSET utf8mb4;
- MYSQL5.7以下的使用emoji-java工具包