phpmyadmin默认utf-8导出不可靠,乱码主因是连接层字符集(需设为utf8mb4)、导出文件编码($cfg'export'='utf-8')及目标环境读取编码三者未对齐,须同步配置并重启服务。
phpmyadmin 默认就是 utf-8 导出,但「默认」不等于「可靠」——很多乱码问题恰恰出在你以为它用了 utf-8,实际却因配置错位或导出路径不同而走了 latin1 或 gbk。
快速导出为什么还是乱码?检查 $cfg['Export']['charset'] 是否被覆盖
快速导出(Quick export)确实默认用 utf-8,但这个行为可被 config.inc.php 中的 $cfg['Export']['charset'] 显式改写。如果你或运维人员曾为兼容旧系统设过 'gbk',那所有快速导出都会强制走 GBK,且界面不提示。
- 打开
phpEnv\phpmyadmin\config.inc.php(或你部署路径下的同名文件) - 搜索
$cfg['Export']['charset'],确认它的值是'utf-8'(注意单引号、小写、带连字符) - 如果没找到这行,就手动加在
/* Export options */区块里,不要放在注释后或数组外 - 改完必须重启 Apache/MySQL 服务,否则配置不生效
自定义导出时选了 utf8mb4 却还是乱码?注意下拉框里的选项名称
Custom 导出页的 Export character set 下拉框里,“utf8mb4” 和 “utf-8” 是两个不同选项,且部分 phpMyAdmin 版本(尤其是 5.2+)会把 utf8mb4 当作连接层字符集,而非文件编码。真正控制 .sql 文件保存编码的是标着 utf-8 的那一项。
- 导出时务必展开
Format-specific options - 在
Export character set中选择utf-8,不是utf8mb4,也不是utf8(无连字符的老别名) - 勾选
Add SET NAMES statement—— 这会让文件开头写入SET NAMES utf8mb4,但它只影响导入时 MySQL 的解析行为,和文件本身编码无关 - 导出后用 VS Code 打开 .sql 文件,右下角确认编码显示为
UTF-8,不是GBK或ISO-8859-1
导出文件开头是 SET NAMES latin1?这是连接层污染,不是导出设置问题
即使你选了 utf-8 导出,如果 phpMyAdmin 当前连接的 character_set_client 是 latin1,它会把查询结果按 latin1 解码再写进文件,导致中文变成乱码字节 —— 此时文件确实是 UTF-8 编码,但内容已是损坏数据。
- 登录 phpMyAdmin 后,执行
SHOW VARIABLES LIKE 'character_set%'; - 重点看
character_set_client、character_set_connection、character_set_results三项,必须全是utf8mb4 - 如果不是,说明
config.inc.php里漏配了$cfg['Servers'][$i]['charset'] = 'utf8mb4'; - 同时确认语言选的是
Chinese simplified (zh-utf-8),而非zh-gb2312—— 后者会强行发SET NAMES gb2312
真正决定导出文件能不能正确显示中文的,从来不是“选哪个编码”,而是三件事是否对齐:phpMyAdmin 连接层用什么字符集读数据、导出功能用什么编码存文件、目标环境用什么编码读文件。少一个环节,乱码就藏在中间等你发现。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











