结论:MySQL 8.0 的默认字符集本来就是 utf8mb4,装 Clara BBS 基本不用手动折腾,只要建库那一步选对,安装向导会自动按 utf8mb4 把表建好。

①建库时定好字符集。在宝塔面板建库,字符集下拉直接选 utf8mb4(不是 utf8,utf8 是 3 字节阉割版,存不了 emoji 和部分生僻字);命令行则是 CREATE DATABASE 库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 然后把库名填进安装向导即可。

②已经建成 utf8 或 latin1 的库要补救。先 ALTER DATABASE 库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 再逐表 ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;,CONVERT 会把字段列一起转过去。改完进后台「系统工具→缓存清理」清一次缓存。

③服务端和连接层别掉队。my.cnf 的 [mysqld] 段落加上 character-set-server=utf8mb4 与 collation-server=utf8mb4_unicode_ci,重启 MySQL 生效。否则最典型的症状就是发帖带表情包时报 Incorrect string value 而写不进去。

④最后验证一下:执行 SHOW VARIABLES LIKE 'character_set%';,结果各项都是 utf8mb4 就说明库、表、连接三层都对齐了。