phpMyAdmin导出中文不乱码的关键是Language设置必须选带“(utf-8)”后缀的选项(如“中文-chinese simplified (utf-8)”),因其直接决定导出SQL文件的SET NAMES声明和默认字符集,而非仅改变界面语言;导出后需用编辑器验证右下角编码显示是否为UTF-8无BOM,并在导入时目标MySQL连接也设为utf8mb4。

导出时选错编码,文件在另一台机器打开就是乱码——根本不是“导出失败”,而是编码链断在了导出环节。
导出前必须确认 phpMyAdmin 的 Language 设置
phpMyAdmin 的 Language 下拉菜单不只是改界面语言,它直接决定导出文件的默认字符集。比如选 “中文-chinese simplified (utf-8)” 时,SELECT * FROM table 导出的 SQL 文件头部会带 SET NAMES utf8mb4;而选 “中文-chinese simplified-gb2312” 就会写 SET NAMES gb2312,后续所有字符串都按该编码解释。
- 导出目标是跨平台(比如 Windows → macOS/Linux 或反之),一律选带
(utf-8)后缀的语言项 - 如果没看到带 utf-8 的选项,说明 phpMyAdmin 版本太老(如 utf8mb4
- 别信浏览器地址栏显示的“当前语言”,一定要点开 Language 下拉框亲自确认文字后缀
导出格式与编码的隐性绑定关系
不同导出格式对编码的支持力度不同:SQL 格式能完整保留 SET NAMES 和 CREATE TABLE 中的 CHARACTER SET 声明;但 CSV for MS Excel 本质是纯文本,不带元信息,全靠你手动指定编码。
-
SQL导出:优先用,编码由Language或 “文件的字符集” 控制,导入时只要目标 MySQL 连接也设为utf8mb4就不会丢 -
CSV for MS Excel:导出页必须点开 “自定义” → 找到 “文件的字符集”,选utf8mb4(不是utf-8);否则 Excel 打开默认用系统 ANSI 编码读,中文必成??? -
JSON或XML:自带编码声明(如<?xml version="1.0" encoding="UTF-8"?>),但部分旧版 Excel 不识别,慎用于交付给非技术人员
导出后立刻验证编码是否生效
别等导入失败才查问题。下载完文件,用支持编码检测的编辑器(如 VS Code、Notepad++)打开,看右下角状态栏显示的编码是不是你选的那个。
立即学习“PHP免费学习笔记(深入)”;
- 如果显示
UTF-8 with BOM:多数情况可接受,但某些 Linux 工具(如mysql命令行)会把 BOM 当作非法字符报错,此时用编辑器另存为 “UTF-8 无 BOM” - 如果显示
ANSI或GB2312:说明导出时 Language 或 “文件的字符集” 没生效,重导 - 用命令行快速验证:
file -i exported.sql(Linux/macOS)或chcp+type exported.sql | head -n 5(Windows)看开头是否有SET NAMES和正确编码名
跨平台导入时的编码补救措施
即使导出编码正确,导入端也可能因环境差异出问题。最常见的是:用 phpMyAdmin 导入 UTF-8 SQL 文件,但目标服务器 MySQL 配置里 character_set_client 是 latin1。
- 导入前,在 phpMyAdmin 的 “导入” 页面,找到 “字符集” 下拉框,手动选
utf8mb4(不能留空或选自动) - 若导入失败报
Incorrect string value,说明某列实际是utf8而非utf8mb4,需先执行ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci - 命令行导入更可控:
mysql -u root -p --default-character-set=utf8mb4 dbname ,比网页导入少一层编码转换
真正容易被忽略的点是:phpMyAdmin 的 Language 设置和导出页的 “文件的字符集” 是两套独立开关,一个管 SQL 头部声明,一个管文件字节流编码——两者不一致时,文件内容和元信息就打架了,乱码只是时间问题。



















