指南

CSV 用 Excel 打开是乱码?3 种解决方法,身份证号也不变形

更新于 2026-10-13

从网站后台、数据库或别的系统导出的 CSV,双击用 Excel 打开,中文变成一堆「鍦烘櫙」「娴嬭瘯」之类的乱码;或者中文没问题,身份证号却变成了 1.23457E+17。这是两个不同的问题,下面分开说。

为什么会乱码

CSV 是纯文本,文件里不记录自己用的是什么编码。Excel 双击打开 CSV 时,按系统默认编码去读,简体中文 Windows 一般是 GBK。

而现在大多数网站、数据库和程序导出的 CSV 是 UTF-8。如果文件开头没有 BOM 标记,Excel 就会把 UTF-8 当成 GBK 来读,于是满屏乱码。反过来,GBK 编码的 CSV 在英文系统的 Excel 里打开也会乱码。

方法 1:用「从文本/CSV」导入,手动指定编码

  1. 新建一个空白工作簿,点「数据 → 从文本/CSV」,选中 CSV 文件;
  2. 在预览窗口的「文件原始格式」里选「65001: Unicode (UTF-8)」;如果还是乱码,再试简体中文(936);
  3. 预览正常后点「加载」。有长数字列时先点「转换数据」,把那一列的类型改成「文本」,再加载。

这个方法不改原文件,每次打开都要重复一遍。

方法 2:给文件加上 BOM,以后双击就正常

  1. 用记事本打开 CSV;
  2. 「文件 → 另存为」,编码选「带有 BOM 的 UTF-8」,保存;
  3. 之后双击用 Excel 打开就不会乱码了。

如果 CSV 是你自己用 Excel 导出的,另存为时选「CSV UTF-8(逗号分隔)」,别人打开也不会乱码。

身份证号、订单号变成 1.23E+17 或后几位变 0

这是另一个问题:Excel 把长串数字当成数值,而数值最多只保留 15 位有效数字。

双击打开的那一刻数字就已经被转换了,保存之后多出的位数永久丢失,只能回到原始 CSV 重新导入。导入时把这些列设成「文本」(方法 1 的第 3 步)才能保住。

方法 3:一键转换成 xlsx

xlszip 格式转换把这些事一次做完:

旧版 .xls、.xlsb、.ods 也可以在同一个页面转成 .xlsx。

更多指南