MySQL表中存Emoji报错的解决方法

报错信息

General error: 1366 Incorrect string value: '\xF0\x9F\x98\x82' for column 'text' at row 1

Emoji表情现在非常流行,用户经常会在输入框内使用Emoji表情。
unicode 标准定义了一个基本 emoji 符号集, 其中共 1182 个字符。例如 U+26A1 表示高电压 (⚡)。

如果我们把输入框内的Emoji字符,提交到后端进行数据库保存时就会报错

相关资料解释说MySQLutf8不是真正的UTF8,只能包含三个字节的unicode,4个字节就会报错。要解决此需要使用utf8mb4 这个编码。

需要把表和columnCHARSET都改成utf8mb4
如仍无法存入Emoji字符
就需要在my.cnf里修改下mysqldcharacter-set-server,把它改为utf8mb4,然后重启mysqld,就可存入Emoji字符了。

[mysqld]
character-set-server = utf8mb4
MySqlEmoji

我来吐槽

*

*

已有 3 条评论

  1. kungengg

    居然是这样。这打字时候窗口抖动有点好玩的

    1. Hoe

      嗯, 窗口抖动用的是的https://gitee.com/HoeXhe/ActivatePowerMode这个插件