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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏鸡蛋君

如何给Wordpress网站换域名

1326
来自专栏VMCloud

【腾讯云的1001种玩法】构建企业级应用环境之数据层面优化(二)

在上一篇中我们讲到准备SQL基础环境改造,这一篇将继续讲述如何为应用提供高可用的底层数据层。

5810
来自专栏python3

mysql-创建用户和授权

我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作。包括select、update、delete、update、grant等操作.

1302
来自专栏Laoqi's Linux运维专列

Mysql5.7 二进制包安装(变化较大)

MySQL5.7.17版(二进制包) : 1.下载、解压二进制包 cd /usr/local/src/ wget http://mirrors.sohu.com...

2905
来自专栏北京马哥教育

数据库之mariadb整体概述

一、数据库的安装方式及其安装步骤 1、安装方式 rpm包安装,yum安装,二进制包安装,编译安装 2、安装步骤 (本文是使用二进制包安装) 1)下载m...

3986
来自专栏上善若水

013 windows10 mysql的安装

Access denied for user 'root'@'localhost' (using password:YES) 解决方案 问题的解决

1363
来自专栏L宝宝聊IT

SQL server 数据库的存储过程和触发器

1663
来自专栏技术博文

MySQL常见错误码及说明

1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败<=================可以忽略 1008:数据库不存在,删除...

4248
来自专栏闵开慧

Ubuntu 下mysql常用操作

1:打开mysql数据库 mysql -h主机地址 -u用户名 -p用户密码 mysql -h110.110.110.110 -uroot -pabcd123 ...

3517
来自专栏转载gongluck的CSDN博客

利用xinetd实现简单web服务器(镜像站)

浏览效果: ? linux服务器安装xinetd后,在/etc/xinetd.d/目录下创建xhttpd文件,并输入内容: service xhttpd { ...

4166

扫码关注云+社区