emoji表情无法存入MYSQL的问题

项目开发中需求需要存入emoji表情,但在保存mysql过程中报错。

执行mysql插入语句,报错

1 row(s) affected, 1warning(s): 1366 Incorrect string valu: 'xF0x9Fx98x93' 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;

修改后再次执行插入语句,成功插入,问题解决。

原文地址:https://www.cnblogs.com/nicori/p/13497167.html