答案是字符编码不一致导致乱码。需确保MySQL使用utf8mb4编码,导出时指定UTF-8字符集,Excel导入选择UTF-8编码,程序导出时保持连接与文件编码一致,避免CSV乱码。

MySQL导出Excel出现乱码,通常是因为字符编码不一致导致的。最常见的场景是从数据库导出数据到CSV或直接生成Excel文件时,中文显示为乱码。下面从几个关键环节给出解决方法。
1. 确保MySQL数据本身编码正确
检查数据库、表和字段的字符集是否为 UTF-8(推荐使用 utf8mb4):
- 查看数据库编码:
SHOW CREATE DATABASE 数据库名; - 查看表编码:
SHOW CREATE TABLE 表名; - 如果编码不是 utf8mb4,可以修改:
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2. 导出时指定正确的字符集
使用 mysqldump 或 SQL 查询导出时,务必声明字符集:
- 命令行导出时添加参数:
mysqldump -u用户名 -p --default-character-set=utf8mb4 数据库名 表名 > 导出文件.sql - 如果导出为 CSV,使用查询语句并指定编码输出:
SELECT * FROM 表名 INTO OUTFILE '/路径/文件.csv' CHARACTER SET utf8mb4 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
3. Excel打开CSV文件时正确选择编码
Excel 默认用 ANSI 打开CSV,容易导致UTF-8中文乱码。解决方法:
- 不要双击直接打开CSV
- 在 Excel 中选择「数据」→「从文本/CSV」导入
- 导入向导中选择「65001: Unicode (UTF-8)」编码
- 完成导入后,中文就不会乱码
4. 使用程序导出时注意编码处理
如果用 Python、PHP 等脚本导出 Excel,需确保:
- 数据库连接使用 UTF-8 编码(如 PHP 的
set_charset("utf8mb4")) - 生成 Excel 文件使用支持中文的库,如 Python 的
openpyxl或xlsxwriter,它们原生支持 UTF-8 - 避免生成纯CSV再用Excel打开,可直接输出 .xlsx 格式
基本上就这些。关键点是:数据库编码统一为 utf8mb4,导出过程保持 UTF-8,Excel 导入时选对编码。只要中间任意一环出错,就可能出现乱码。











