由于前期建站不注意细节,建立数据库的时候选择了utf8编码。导致了不能保存emoji,近期也有小伙伴反馈此问题,目前已经修复。本篇文章带你了解主流博客系统如何修改编码来支持emoji表情
首先,最重要的:备份数据库,备份数据库,备份数据库
不备份出了问题不要怪我哦~
第二,检查自己的mysql版本,5.5.3以上的,可以继续阅读本文章,低于5.5.3的请升级版本
查看方法,执行以下命令,看返回结果:
select version();
返回结果示例:
mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.17 | +-----------+ 1 row in set (0.01 sec)
3、修改服务器上mysql默认编码,修改数据库、表、列的字符集为utf8mb4
修改服务器上mysql配置文件my.conf(如ubuntu为例,一般在/etc/mysql/my.conf,Windows系统一般是在mysql安装目录的my.ini):
[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,并检查utf8mb4是否生效。
通过SQL查询:
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
修改数据库、表、列字符集:
大体上是这样的:
ALTER DATABASE [数据库名称] CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; ALTER TABLE [表名] CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
z-blog:
(表名我用默认的zbp_的前缀来进行操作,修改前缀的请根据你实际的表名操作),
数据库名我就用zblog了,大家根据自己的实际情况来:
ALTER DATABASE zblog CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; ALTER TABLE `zbp_post` CHANGE `log_Title` `log_Title` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `zbp_post` CHANGE `log_Intro` `log_Intro` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL; ALTER TABLE `zbp_post` CHANGE `log_Content` `log_Content` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL; ALTER TABLE `zbp_comment` CHANGE `comm_Content` `comm_Content` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
也可以手动操作:
phpmyadmin或是其它数据库管理工具,连接本数据库,
打开post文章表,修改log_Title,log_Intro,log_Content的排序规则为utf8mb4_general_ci
comment评论表里的comm_Content也改为utf8mb4_general_ci
还有其它表里你认为需要的字段也改一下。
这样更改一下数据库就支持emoji表情啦?????????????????????????♀️

微信扫码查看本文
发表评论