给Typecho更换utf8mb4字符集以支持Emoji表情

给Typecho更换utf8mb4字符集以支持Emoji表情

蓝逸轩
2021-09-17 / 0 评论 / 99 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年09月17日,已超过1321天没有更新,若内容或图片失效,请留言反馈。

Typecho默认使用的是UTF8字符集,仅占用3字节,这样就不能支持最新的Emoji扩展字符。这次给Typecho更新字符集,每个字占用4字节,就可以正常存储Emoji了。

准备

  • MySQL 5.5.3或更高
  • MariaDB 10.0或更高
    为方便起见,可以使用GUI:
  • phpMyAdmin 4.3或更高

更新SQL配置

修改 my.cnf 配置文件,在各项之下加入

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

保存后重载配置或重启服务即可。

检查数据库变量

ly8l3o0w.png

进入数据库终端,执行

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

不出所料会得到以下结果:

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

更新数据表

进入数据库终端,执行

更新数据库
ALTER DATABASE <database_name> CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

其中, <database_name> 更换为你的数据库名。

更新数据表
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

其中, <table_name> 更换为你的数据库表名。
Typecho可以参照以下语句(默认表前缀是 typecho_ ):

ALTER TABLE typecho_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE typecho_contents CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE typecho_fields CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE typecho_metas CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE typecho_options CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE typecho_relationships CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE typecho_users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

修改Typecho配置

编辑 config.inc.php 文件,将数据库 charset 改成 utf8mb4 即可。

0

评论

博主关闭了所有页面的评论