mysql存储emoji问题

Posted lin_zone

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql存储emoji问题相关的知识,希望对你有一定的参考价值。

前一段时间,项目中需要在数据库中存储emoji,由于编码格式不对,直接导致数据库报错,后来修改mysql的编码,就解决了

 

emoji符号实际上是文本,并不是图片,它们仅仅显示为图片

 

在mysql5.5.3或更高的版本才支持

确定数据库支持存储表情后,可以修改数据库的默认编码,这样以后再建数据库的话,就不用考虑存emoji这个问题了

在mysql 的配置文件 my.cnf 或 my.ini 配置文件中修改如下:

[client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server     = utf8mb4_general_ci

重启MySQL,然后使用以下命令查看编码,应该全部为utf8mb4(character_set_filesystem和character_set_system除外):

mysql> show variables like %char%;
+--------------------------+--------------------------+
| Variable_name            | Value                    |
+--------------------------+--------------------------+
| character_set_client     | utf8mb4                  |
| character_set_connection | utf8mb4                  |
| character_set_database   | utf8mb4                  |
| character_set_filesystem | binary                   |
| character_set_results    | utf8mb4                  |
| character_set_server     | utf8mb4                  |
| character_set_system     | utf8                     |
| character_sets_dir       | /usr/local/mysql-5.7.... |
+--------------------------+--------------------------+
8 rows in set (0.00 sec)

使用命令查看collation设置,应该全部是utf8mb4_general_ci

mysql> show variables like %coll%;
+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database   | utf8mb4_general_ci |
| collation_server     | utf8mb4_general_ci |
+----------------------+--------------------+
3 rows in set (0.01 sec)

如果character_set_database还是为utf8,需要重启服务器。

现在,MySQL就可以正确存储emoji字符了。

但是如果是之前已经建好的数据库怎么办呢?

可以使用 mysql命令

 ALTER TABLE 表名 DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci; 

来更改已有的数据库表的编码

 

参考地址:https://www.liaoxuefeng.com/article/00145803336427519ae82a6c5b5474682c0c4ba5b47fb33000

以上是关于mysql存储emoji问题的主要内容,如果未能解决你的问题,请参考以下文章

java后台,接收到emoji表情内容后,存储在mysql存储不了的问题,emoji转义

java后台,接收到emoji表情内容后,存储在mysql存储不了的问题,emoji转义

如何让RDS 下的 Mysql 支持 Emoji 表情存储

轻松处理PHP开发中微信emoji表情mysql存储的问题

在不升级 mysql 的情况下直接使用 mysql utf8 存储 超过三个字节的 emoji 表情

Java在mysql中存储emoji表情