MySql保存emoji表情时报错 “Incorrect string value: '\xF0\x9F\x98\x84'”

Mysql用了utf8字符集,不能保存emoji表情,因为utf8最多存三个字节,而emoji表情为4个字节,所以保存时会报一个 Incorrect string value: '\xF0\x9F\x98\x84'的错误,目前找到的解决方案有两个。

方案1

此方案需重启数据库

  1. 修改My.conf
[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
  1. 重启数据库

  2. 修改表以及字段为 utf8mb4

  3. 修改连接字符串

    以.net core连接字符串为例

    server=localhost;port=3306;user id=root;password=123;charset=utf8mb4;
    

方案2

  1. 修改表以及字段为 utf8mb4。

  2. 修改连接字符串 ,参考方案1第四点。

  3. 修改插入/修改的SQL语句,在每条sql语句前加上 SET NAMES utf8mb4,如下所示。

SET NAMES utf8mb4;INSERT INTO Mytable ...;