WordPress 6.5+ 强制要求 utf8mb4,phpMyAdmin 创建数据库时必须选 utf8mb4 字符集和 utf8mb4_unicode_ci 排序规则,否则会导致乱码、截断或插入失败;已建库可用 ALTER DATABASE 修改,表需批量转换,wp-config.php 需定义 DB_CHARSET='utf8mb4',MySQL 服务端也须配置 character-set-server=utf8mb4 并重启。
phpMyAdmin创建数据库时选错排序规则
wordpress 6.5+ 强制要求使用 utf8mb4 字符集,若在 phpmyadmin 中新建数据库时仍选 utf8 或 latin1,后续安装或中文内容保存会直接出乱码、字段截断甚至插入失败。
进 http://localhost/phpmyadmin → 左侧点“数据库” → 输入库名(如 wp_local)→ **字符集选 utf8mb4,排序规则必须选 utf8mb4_unicode_ci**(不是 utf8mb4_general_ci,后者兼容性略差,WordPress 官方推荐前者)。
- 别手快点“创建”,漏掉排序规则下拉框的二次确认
- 如果已建库但选错了,不要删库重来;用 SQL 执行:
ALTER DATABASE `wp_local` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; - 建库后立刻点“权限” → 确保
root用户对该库有全部权限,否则 wp-config.php 连接会报错
已有数据库表的排序规则未批量更新
即使数据库层面改对了,里面已存在的表(尤其是 wp_options、wp_posts)可能还是 utf8_general_ci,导致后台编辑文章时标题/内容乱码、ACF 字段存不进值。
在 phpMyAdmin 中选中你的数据库 → 全选所有表(勾选左上角全选框)→ 下方“选中项”下拉菜单 → 选 转换为 utf8mb4_unicode_ci → 执行。
- 执行前务必先备份整个数据库(导出为 .sql 文件),转换不可逆
- 若某张表转换失败,单独选中它 → “操作”页签 → 在“排序规则”下拉框里手动设为
utf8mb4_unicode_ci→ 点“执行” - 注意:
wp_users表的user_login字段若含特殊字符,转换后需检查登录是否正常
wp-config.php 中没声明 DB_CHARSET
就算数据库和表都设对了,WordPress 仍可能按默认字符集连接,尤其在多环境部署时。常见现象是前台正常、后台部分页面(如插件设置页)文字变问号或方块。
打开 wp-config.php,在 define('DB_NAME', '...'); 后面添加两行:
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', ''); // 留空,让 WordPress 自动匹配
- 别写成
define('DB_CHARSET', 'utf8');—— 这是旧版写法,WordPress 6.5 会忽略或降级处理 - 如果文件里已有
DB_CHARSET行但值为空或错误,直接覆盖掉 - 保存后清空浏览器缓存再刷新后台,乱码若消失,说明生效
MySQL 服务端配置未同步 utf8mb4
极少数情况下,XAMPP 自带的 MySQL 没启用全局 utf8mb4,导致新创建的表默认仍是 utf8。现象是:每次新建表,排序规则又自动回退到旧值。
编辑 XAMPP 安装目录下的 mysql\bin\my.ini(Windows)或 etc/my.cnf(macOS/Linux),在 [mysqld] 区块下添加:
[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
- 改完必须重启 MySQL 服务(XAMPP 控制面板点 Stop 再 Start)
- 重启后进 phpMyAdmin,执行
SHOW VARIABLES LIKE 'character_set_server';,确认返回值是utf8mb4 - 若仍显示
utf8,说明配置文件路径不对,或被其他 my.cnf 覆盖,可用mysql --help | grep "Default options"查找真实加载路径
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











