MySql Emoji表情报错乱码解决方案
2022-08-25Mysql添加修改表的时候如果涉及到Emoji 表情可能会出现以下类似错误
MySql.Data.MySqlClient.MySqlException (0x80004005): Incorrect string value: '\xF0\x9F\x98\x88' for column
原因是utf8 编码的 MySQL 无法保存占位是4个字节的 Emoji 表情。MYSQL 5.5 之前,UTF8 编码只支持1-3个字节,为了使项目全面支持客户端输入的 Emoji 表情,升级编码为 utf8mb4 是最佳解决方案,因为utf8mb4是utf8的超集,理论上即使client修改字符集为utf8mb4,也会不会对已有的utf8编码读取产生任何问题
可以把数据库默认字符设置为utf8mb4,或者单独设置表以及字段字符为utf8mb4
然后客户端操作数据库的sql加SET NAMES utf8mb4 例如: SET NAMES utf8mb4;insert into test(name) values('xx')