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
保存后重载配置或重启服务即可。
检查数据库变量
进入数据库终端,执行
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
即可。
评论