根本原因是主题加载时未正确声明或继承字符集,导致浏览器用latin1解析UTF-8中文;需统一设置语言文件为UTF-8 with BOM、$cfg['DefaultCharset']='utf-8'、模板meta与后端一致,并清除浏览器缓存。

第三方 phpMyAdmin 主题出现中文乱码或缺失,根本原因不是主题本身写错了字,而是主题加载时未正确声明或继承字符集,导致浏览器用 latin1 或系统默认编码解析 UTF-8 编码的中文字符串。
主题语言文件未启用 UTF-8 BOM 或保存为 ANSI/GBK
很多老主题(尤其是 2010–2015 年间发布的)把 zh-utf-8.php 或 zh-gb2312.php 文件用记事本另存为“ANSI”格式,实际是 GBK 编码,但文件头没声明,phpMyAdmin 加载时按 UTF-8 解析,就变成“涓枃”“䏿–‡”。
- 检查方式:用 VS Code 或 Notepad++ 打开语言文件,右下角看真实编码;若显示 ANSI/GBK,且内容已乱码,说明原始字节还在,但被误读
- 修复方法:在编辑器中「以 UTF-8 编码重新打开」→ 全选 → 「另存为」→ 编码选
UTF-8 with BOM(phpMyAdmin 4.0+ 更兼容带 BOM 的 UTF-8) - 严禁用 Windows 记事本直接“另存为 UTF-8”,它默认输出无 BOM 的 UTF-8,部分旧版 phpMyAdmin 会 fallback 到 latin1
主题覆盖了 $cfg['Lang'] 但未同步设置 $cfg['DefaultCharset']
某些主题通过修改 config.inc.php 强制指定 $cfg['Lang'] = 'zh-utf-8';,却漏掉配套设置:$cfg['DefaultCharset'] = 'utf-8';。结果界面 HTML 响应头仍是 Content-Type: text/html; charset=iso-8859-1,浏览器按 latin1 渲染中文标签。
- 必须同时配置这两项,缺一不可
- 若主题自带
config.inc.php,检查其中是否含$cfg['DefaultCharset'];没有就手动加一行:$cfg['DefaultCharset'] = 'utf-8'; - 注意值是
'utf-8'(带连字符),不是'UTF8'或'utf8',否则 phpMyAdmin 会忽略
主题硬编码了 HTML meta 标签但 charset 值与后端不一致
部分主题在 templates/xxx/header.phtml 或自定义 header 模板里写了:<meta http-equiv="Content-Type" content="text/html; charset=gb2312">锛



















