emoji在mysql中存储失败的问题(mysql字符集替换)

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)
posted @ 2024-12-29 10:46  马猴♂兄贵  阅读(56)  评论(0)    收藏  举报