CSV 用 Excel 打开中文乱码怎么办?
更新于 2026-09-29 · 阅读约 5 分钟
简短回答
乱码不是文件坏了,而是编码没对上。CSV 文件里只有文字的字节,并不记录这些字节该按哪种编码来读。国内系统导出的 CSV 最常见的是 UTF-8 和 GBK 两种,Excel 双击打开时只会按其中一种读,读错了,中文就变成乱码。
最稳妥的解决方法:在 Excel 里用「数据 → 从文本/CSV」导入,在「文件原始格式」里选 65001: Unicode (UTF-8),还是乱码就改选 936: 简体中文(GB2312),预览正常后再加载。乱码状态下不要保存文件,否则原来的文字可能再也恢复不了。
为什么会乱码
同一个汉字,在不同编码里存成的字节不一样:「商」在 UTF-8 里是 3 个字节,在 GBK 里是 2 个字节。用错的编码去读,字节就被错误地拆开、重新组合,拼出另一串毫不相干的字符,这就是乱码。
Windows 中文版的 Excel 双击打开 CSV 时,默认按 GBK 读取;只有文件开头带着一个叫 BOM 的标记,它才知道要按 UTF-8 读。所以最常见的情况是:文件是不带 BOM 的 UTF-8,Excel 却把它当成了 GBK。Mac 版 Excel 更严格:GBK 文件和不带 BOM 的 UTF-8 文件,双击打开都会乱码。
看乱码的样子,就知道是哪种编码
下表是同一份超市销售数据的两个表头「商品名称」「商品货号」,在不同编码、不同打开方式下的真实显示结果:
| 文件编码 | 打开方式 | 「商品名称」显示为 | 「商品货号」显示为 |
|---|---|---|---|
| UTF-8(不带 BOM) | Windows 中文版 Excel 双击 | 鍟嗗搧鍚嶇О | 鍟嗗搧璐у彿 |
| UTF-8(不带 BOM) | Mac 版 Excel 双击 | ÂïÜÂìÅÂêçÁß∞ | ÂïÜÂìÅË¥ßÂè∑ |
| GBK | Mac 版 Excel 双击 | …Ã∆∑√˚≥∆ | …Ã∆∑ªı∫≈ |
| GBK | 按 UTF-8 读取的软件 | ��Ʒ���� | ��Ʒ���� |
| UTF-8(带 BOM) | Windows / Mac 版 Excel 双击 | 商品名称 ✓ | 商品货号 ✓ |
在 Excel 里怎么解决
方法一:用「从文本/CSV」导入(Windows,推荐)
- 1打开一个空白工作簿,点「数据」选项卡 →「从文本/CSV」。
- 2选中 CSV 文件,点「导入」。
- 3在预览窗口顶部的「文件原始格式」里选
65001: Unicode (UTF-8);如果预览还是乱码,改选936: 简体中文(GB2312)。 - 4预览中文正常后,点「加载」。
适用于 Excel 2016 及以上版本和 Microsoft 365。订单号这类长编号如果被识别成了数字,在这一步点「转换数据」,把那一列的类型改成「文本」。
方法二:用记事本转存为带 BOM 的 UTF-8(Windows)
- 1右键 CSV 文件 →「打开方式」→「记事本」。记事本能自动识别 UTF-8 和 GBK,中文应该显示正常。
- 2点「文件 → 另存为」,把底部的「编码」改成「带有 BOM 的 UTF-8」,保存。
- 3之后再双击,用 Excel 打开就正常了,发给别人也不会乱码。
几百 MB 的大文件用记事本打开会很慢,甚至卡住,这种情况用方法一。
方法三:Mac 版 Excel
不要双击打开。在 Excel 里点「文件 → 导入」,选择「CSV 文件」,在文本导入向导的「文件原始格式」里选 UTF-8;如果还是乱码,改选简体中文(GB 18030)。
从源头避免:导出时就选对编码
- 导出界面如果有「编码」选项,给 Excel 用的文件选「UTF-8(带 BOM)」或 GBK。
- 用 Python 导出时,把编码写成
utf-8-sig,它会在文件开头加上 BOM:
df.to_csv("销售数据.csv", index=False, encoding="utf-8-sig")在数力里
在数力里:打开就是对的
数力导入 CSV 时,会先读文件开头,自动判断它是 UTF-8、GB18030(兼容 GBK)还是 Big5,并在导入前给你看预览。万一判断错了,在右侧「编码」里换一个,预览立刻更新。
- 1新建分析,把 CSV 文件拖进窗口,Excel 文件(.xlsx / .xls)也可以。
- 2看预览:中文显示正常,就点「确认」。编号这类列可以在这里指定为「文本」,不会变成科学计数法。
- 3要把结果交给用 Excel 的同事?从数力导出的 CSV 自带 BOM,对方双击打开也不会乱码。

常见问题
- 为什么同一个 CSV,别人电脑上打开正常,我这里却乱码?
- 文件本身没变,变的是打开它的软件。Windows 和 Mac 版的 Excel、不同的系统语言,双击打开时默认按不同的编码读取。用上面的「从文本/CSV」导入并手动选编码,在哪台电脑上结果都一样。
- 怎么知道文件是 UTF-8 还是 GBK?
- 最简单的办法是用 Windows 的记事本打开,右下角状态栏会显示编码:「UTF-8」「带有 BOM 的 UTF-8」或「ANSI」(在中文系统里就是 GBK)。也可以对照上面的表格,看乱码的样子来判断。
- 订单号、身份证号变成了 1.23E+17,后几位还变成了 0,也是编码问题吗?
- 不是。这是 Excel 把长编号当成了数字:Excel 的数字只保留 15 位有效数字,超出的部分会变成 0,保存后就无法恢复。导入时把这一列的类型设成「文本」即可,方法一的「转换数据」和数力的导入预览都可以设置。
- 所有内容都挤在第一列里,没有分开,怎么办?
- 这是分隔符的问题,和编码无关:文件可能用的是分号、Tab 或竖线,而不是逗号。用「从文本/CSV」导入时可以选择分隔符;数力的导入预览里也能直接切换逗号、分号、Tab 和竖线。
- 用 WPS 打开也乱码怎么办?
- 原因相同。在 WPS 表格里用「数据 → 导入数据」导入 CSV,在导入步骤中选择文件的编码(UTF-8 或 GBK),思路和 Excel 的方法一一样。