Excel 转 CSV 中文乱码怎么办?BOM 与 GBK 处理指南

Excel 转 CSV 后中文乱码,通常不是文件坏了,而是 Excel 猜错了文本编码。Excel 转 CSV,是把 xlsx/xls 表格另存为逗号分隔的纯文本文件;CSV 本身不记录编码和单元格类型,所以中文、分隔符、长数字串都可能在打开时出问题。用小鹿tools 的 Excel 转 CSV 默认带 UTF-8 BOM,本地转换不上传,可以明显减少“中文变问号、变方块、整列串掉”的情况。

  • CSV 中文乱码主要是编码识别错误,常见于 UTF-8 无 BOM 被 Excel 当成 GBK。
  • 给 Excel/WPS 打开时,导出 CSV 建议保留 UTF-8 BOM;给程序读取时再按接口要求决定。
  • 旧系统导出的 CSV 常是 GBK,需要先按 GBK 读入,再转成 UTF-8 或 xlsx。
  • 逗号、引号、换行要按 RFC 4180 转义,否则会出现错列和断行。
  • 手机号、编号、邮编这类值不适合直接交给 Excel 猜类型,转 xlsx 更稳。

为什么 Excel 转 CSV 会乱码

CSV 乱码的主要原因是“打开的人”和“生成的人”没有用同一种编码。CSV 是纯文本格式,不像 xlsx 那样保存完整的工作簿结构和编码信息。

CSV 保存的是文本行和字段,不保存字体、颜色、公式、sheet、单元格类型。编码和分隔符一旦被猜错,看到的表格就会乱。

CSV 不保存单元格类型

xlsx 里可以标注某列是文本、日期或数字,CSV 只是一行行字符。Excel 打开 CSV 时会自动猜测类型:像 00123 这样的编号可能变成 123,18 位数字可能被显示成科学计数法。文件没有坏,只是 Excel 用了它自己的解释方式。

编码猜错就会中文乱码

UTF-8、GBK、GB2312 都能表示中文,但字节解释规则不同。一份 UTF-8 的 CSV 如果没有 BOM,部分 Excel 环境可能按 GBK 打开,结果中文变成问号或奇怪符号。反过来,旧系统导出的 GBK 文件被按 UTF-8 读取,也会乱码。

现象常见原因处理方向
中文变乱码UTF-8 / GBK 被误判带 BOM 导出,或按正确编码重新读入
所有内容在一列分隔符不是当前区域设置期望值改用逗号、分号或制表符重新导出
字段被拆成多列值里有逗号但没有加引号按 CSV 标准转义含逗号的字段
手机号变科学计数法Excel 自动猜成数字改转 xlsx,并把该列保留为文本

怎么修复中文乱码

修复乱码先判断文件本来的编码,再决定导出给谁用。给 Excel 打开时,UTF-8 BOM 是省事的选择;给程序读取时,要按接收方要求来。

从 Excel 转 CSV 时

  1. 打开 Excel 转 CSV,拖入 xlsx 或 xls 文件。
  2. 保留默认的“带 UTF-8 BOM”选项,中文表格通常不需要再调。
  3. 如果对方系统要求分号或制表符,按要求切换分隔符。
  4. 下载 CSV 后,用 Excel/WPS 打开抽查中文、逗号、换行和长数字列。

已有 CSV 打开乱码时

如果文件来自财务系统、ERP、老后台,先怀疑它是 GBK/GB2312。用 CSV 转 Excel 读入时把源编码切到 GBK,再导出 xlsx。xlsx 内部用 Unicode 保存文本,转给同事打开时更少踩编码坑。

  • 给 Excel 看:CSV 选择 UTF-8 BOM,或直接转 xlsx。
  • 给数据库导入:确认数据库导入工具要求的编码和分隔符。
  • 给程序读取:按接口文档来,BOM 可能需要关闭。
  • 给跨团队交换:用 xlsx 更稳,因为它保留单元格类型和多 sheet。
  • 含隐私表格:优先使用浏览器本地转换,文件不上传。
  • 大文件转换:超过页面提示上限时,拆分 sheet 或拆分行再处理。

错列、断行、前导 0 怎么办

乱码之外,CSV 还常见错列、断行和数字变形。它们不是同一个问题,处理方法也不同。

字段里有逗号、引号、换行

标准 CSV 允许单元格里出现逗号和换行,但这些字段必须用双引号包住,字段内部的双引号要写成两个双引号。小鹿 File 的转换会按 RFC 4180 处理这些字符,避免“地址里有逗号导致多出一列”。

编号、手机号、邮编要保留文本

如果交付对象是人,带长数字串的 CSV 不如 xlsx 稳。转成 xlsx 时把这些列保留为文本,手机号、身份证、银行卡号、邮编就不会被 Excel 改写成科学计数法或丢掉前导 0。

实测一份 12 列、3000 行的客户测试表,含中文姓名、地址逗号、手机号和备注换行,浏览器本地转 CSV 基本是秒级完成。真正需要重点核对的不是速度,而是编码、分隔符和长数字列是否符合接收方要求。

CSV、Excel、JSON 怎么选

CSV 适合交换扁平数据,Excel 适合人工查看和保留格式,JSON 适合程序接口。选对格式,比事后修乱码更省时间。

按接收方选择格式

如果对方要导入数据库,CSV 通常合适;如果对方要人工筛选、改列宽、保留多个 sheet,用 xlsx;如果对方是接口或脚本,JSON 更自然。想把数据格式的取舍一次看清,可读 CSV、JSON、XML、YAML 区别

按风险选择格式

有中文、长数字、前导 0、多个 sheet 时,xlsx 的风险小;只有纯数字和短文本、要给程序批量导入时,CSV 更轻。CSV 不差,只是它需要你把编码和分隔符说清楚。

常见问题

Excel 转 CSV 后中文乱码怎么办?
优先重新导出一份带 UTF-8 BOM 的 CSV,再用 Excel 或 WPS 打开。BOM 会提示软件按 UTF-8 读取,中文通常就能正常显示。如果源文件本来是 GBK,需要按 GBK 读入后再另存。
UTF-8 BOM 是什么?为什么能解决乱码?
BOM 是文件开头的编码标记。CSV 没有专门记录编码的位置,Excel 看到 UTF-8 BOM 后更容易判断这是 UTF-8 文件,避免把中文按 GBK 或其他本地编码误读。
CSV 文件给程序读取,要不要加 BOM?
不一定。给 Excel 打开建议加 BOM;给程序、数据库或接口读取时,要看对方要求。有些程序不喜欢 BOM,可能把表头第一个字段读成带隐藏字符的名字。
Excel 打开 CSV 后所有内容挤在一列怎么办?
这是分隔符没有被识别。CSV 可能用分号或制表符分隔,而 Excel 按逗号打开。重新导出时选择对方需要的分隔符,或在 Excel 里用“数据导入”手动指定分隔符。
手机号、身份证号转 CSV 后变科学计数法怎么办?
CSV 没有单元格类型,Excel 会自动猜类型,长数字串容易变科学计数法或丢前导 0。要交给人打开时,建议用 CSV 转 Excel 生成 xlsx,并把这些列保留为文本。
Excel 转 CSV 会上传我的表格吗?
小鹿tools 的 Excel 转 CSV 在浏览器本地处理,文件不会上传服务器,关闭页面即清除。含客户名单、订单、库存等敏感表格时,这一点尤其重要。
多 sheet 的 Excel 转成 CSV 后为什么变多个文件?
CSV 只能表示一张二维表,不能保存多个 sheet。一个 Excel 有多个工作表时,应当每个 sheet 导出一个 CSV,或打包成 zip 一次下载。

要给 Excel 打开,就用 Excel 转 CSV 导出带 BOM 的 CSV;已经有 CSV 但中文乱了,可用 CSV 转 Excel 按正确编码读入后生成 xlsx。需要把表格交给程序处理,再看 CSV、JSON、XML、YAML 区别

参考资料

延伸阅读

本文由「小鹿tools」整理,更新于 2026-06。如发现信息过期或有误,欢迎反馈。