mysql字符集需要utf8mb4才能支持emoji存储,因为utf8一个字符最大3字节,但emoji4字节,所以需要升级成真正的UTF-8
mysql的uft8最大只有3字节,是因为mysql开发认为3字节足以存储常见字符。后续的uft8mb4(most bytes 4)才是完整的4字节UTF-8
修改表及所有字段的默认字符集
# 修改表及所有字段的字符集
ALTER TABLE `table_name` CONVERT TO CHARACTER SET `character_name`
# 查询表中所有字段信息
SHOW FULL COLUMNS FROM `table_name`;
# 修改前,无法保存emoji
INSERT INTO student(name,info) VALUES('emoji', '😘');SQL Error [1366] [HY000]: Incorrect string value: '\xF0\x9F\x98\x98' for column 'info' at row 1# 修改后
INSERT INTO student(name,info) VALUES('emoji', '😘');Query OK, 1 row affected (0.07 sec)