emoji表情无法存入MYSQL的问题
项目开发中需求需要存入emoji表情,但在保存mysql过程中报错。
执行mysql插入语句,报错
1 row(s) affected, 1warning(s): 1366 Incorrect string valu: '\xF0\x9F\x98\x93' fpr column 'name' at row 1
原因
在查找资料中发现,原本utf-8的3字节是可以覆盖所有语言的,但后来emoji符号的出现导致字符集扩展了,导致utf-8出现一些4字节的符号,mysql的utf-8一个字符占3个字节,但emoji表情需要占4个字节,因此造成文本无法保存。
解决
1.把数据库编码改为utf8mb4,但因为utf8mb4是占4字节,为了节省空间一般不会直接改库编码。
2.单独把某个表的字段改为utf8mb4
ALTER TABLE `表名` CHANGE COLUMN `列名` `列名` VARCHAR(45) CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci' NULL DEFAULT NULL;
修改后再次执行插入语句,成功插入,问题解决。