千家信息网

MySQL中怎么支持emoji图标存储

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章将为大家详细讲解有关MySQL中怎么支持emoji图标存储,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。常用字符集ASCII:美国信息互换标准
千家信息网最后更新 2025年01月23日MySQL中怎么支持emoji图标存储

这篇文章将为大家详细讲解有关MySQL中怎么支持emoji图标存储,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

常用字符集

  • ASCII:美国信息互换标准编码;英语和其他西欧语言;单字节编码,7位表示一个字符,共128字符。

  • GBK:双字节,汉字内码扩展规范;中日韩汉字、英文、数字;双字节编码;共收录了21003个汉字,GB2312的扩展。

  • UTF-8:Unicode标准的可变长度字符编码;Unicode标准(统一码),业界统一标准,包括世界上数十种文字的系统;

  • UTF-8:使用一至三个字节为每个字符编码。

  • utf8mb4:存储四个字节,应用场景用于存储emoji表情,因为可以emoji表情四个字节。

  • utf8mb4:MySQL版本 > 5.5.3 。

  • 其他常见字符集:UTF-32,UTF-16,Big5,latin1

  • 数据库中的字符集包含两层含义
    各种文字和符号的集合,包括各国家文字、标点符号、图形符号、数字等。
    字符的编码方式,即二进制数据与字符的映射规则。

系统环境

  • MySQL 5.7.14

  • Mac OSX 10.11.6

首先备份

升级数据之前备份您服务器上的所有数据,保持良好习惯,安全***!

升级您的MySQL

新的数据库可以在这里下载Upgrade the MySQL server to v5.5.3+。

修改您的数据库、表、字段

# 对每一个数据库: ALTER DATABASE 这里数据库名字 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; # 对每一个表: ALTER TABLE 这里是表名字 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 对每一个字段: ALTER TABLE 这里是表名字 CHANGE 字段名字 重复字段名字 VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 上面一句或者使用modify来更改 ALTER TABLE 这里是表名字 modify 字段名字 VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '';

utf8mb4完全向后兼容utf8,无乱码或其他数据丢失的形式出现。理论上是可以放心修改,如果您不放心修改,您可以拿备份恢复数据,然后让程序员处理这种兼容emoji存储问题,存的时候过滤一遍转成base64,然后取的时候转回来?... 还是修改数据库比较方便。

检查你的字段和索引

不要将所有的都设置成utf8mb4,这个冒得必要。我只在我某些字段类型为VARCHAR的时候才设置成utf8mb4。

修改MySQL配置文件

这个地方最坑,我在我Mac osx 系统上找不到/etc/my.cnf 它根本不存在,所以我们需要创建这样一个文件并修改它。

# 进入这个目录, # 在这个目录下面有个后缀为`.cnf`的文件 cd /usr/local/mysql/support-files/  # 将这个文件复制到`etc`目录中并将名字命名为`my.cnf` sudo cp my-default.cnf /etc/my.cnf  # 然后编辑`my.cnf`文件,将下面内容复制到里面。 sudo vim /etc/my.cnf

MySQL configuration file (/etc/my.cnf):

[client] default-character-set = utf8mb4  [mysql] default-character-set = utf8mb4  [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci

重启MySQL

重启步骤很重要,不然没有任何效果。

  1. 启动:/usr/local/mysql/support-files/mysql.server start

  2. 停止:/usr/local/mysql/support-files/mysql.server stop

  3. 重启:/usr/local/mysql/support-files/mysql.server restart

系统中可以以这种形式重启、停止或启动

service mysqld stop service mysqld start service mysqld restart

查看是否设置成功

通过下面命令查询是否设置成功!

# 登陆MySQL进行查询 mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';  # 运行上面代码显示下面结果 # +--------------------------+--------------------+ # | 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               | # | collation_connection     | utf8mb4_unicode_ci | # | collation_database       | utf8mb4_unicode_ci | # | collation_server         | utf8mb4_unicode_ci | # +--------------------------+--------------------+  # 查看表的情况 mysql>  SHOW FULL COLUMNS  FROM  users_profile;

到这一步表示你成功了!恭喜你!~

修复和优化表

我跑到这一步其实没有任何必要修复和优化表,为了保险起见,我还是运行了这两条命令,虽然不知道它有什么卵用,放在这里做个笔记吧。

REPAIR TABLE 表名字; OPTIMIZE TABLE 表名字;

关于MySQL中怎么支持emoji图标存储就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 名字 字符 字段 字节 数据库 编码 存储 文件 标准 系统 成功 内容 备份 字符集 文字 时候 目录 符号 汉字 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 台服怀旧服服务器选择 数据仓库与数据库技术的用途 mysql无法写入数据库 为什么CGSS数据库进不去 安全气囊ecu软件开发 虚拟化服务器如何改变性能 程序员加网络安全 mbse工具软件开发 无线网络安全防护系统 中职安全教育网络安全测试题 如何建设经营数据库 加强计算机网络安全及其对策研究 网络安全科普平台的功能 哪个券商服务器最快 为服务器一块硬盘故障灯亮起 nas服务器信息管理系统 网络安全职业经理人 丹东新零售报单软件开发公司 提高其网络安全英文 塞尔达织梦岛有几个服务器 酷狗直播用什么软件开发的 提高公司网络安全系数 数据库符号是什么意思 属于安全的服务器登录方式是 怀旧服能在哪个服务器联机 asp的web服务器 数据库按条件查询后计算平均值 抖音拉新网络技术分享 湖南pdu服务器专用电源价格表 安卓微信显示服务器异常
0