管理

Excel打开CSV乱码:把UTF-8编码与列的数据类型分开检查

本文在AI辅助下由原文翻译而成。请结合原文核对专业术语和公式。

双击CSV后,中文、日文或韩文名字变成奇怪字符,不要立刻覆盖原文件。可能是字节被按错误编码解读。即使文字正常,编号的前导零和日期仍可能被自动转换,所以编码与列类型需要分别检查。

编码决定字符如何解码,列类型决定数值如何解释。
图 1. 编码决定字符如何解码,列类型决定数值如何解释。

区分编码问题与分隔符问题

UTF-8说明字符如何表示为字节,逗号、分号等分隔符用于划分字段。文字异常先查编码;整行挤进一个单元格先查分隔符。通过导入预览一次改变一个条件,避免混合问题。

现象首先检查还要核对
名字变成乱码原文件实际编码未损坏原件是否保留
所有列进一个单元格分隔符引号内分隔符处理
00123变成123列数据类型转换前的原始数据

使用导入预览,不要反复猜测

Microsoft说明带BOM的UTF-8 CSV可按常规方式打开,也提供不带BOM文件的数据或文本导入方式。是否带BOM取决于来源。关键是使用能够先检查编码和类型、再加载数据的路径。

  1. 保存未经修改的CSV副本。
  2. 从数据选项卡选择文本/CSV导入。
  3. 在预览中核对真实编码和分隔符。
  4. 检查名字、地址及非ASCII字符。
  5. 加载前把代码和长编号列设为文本。
  6. 将核对后的数据载入新工作簿。

还要检查Power Query自动添加的类型转换步骤。前导零已经删除后,再改成文本不能恢复它。应调整步骤,让原始列从开始就按文本读取,然后重新导入原件。

预览编码和分隔符,将标识符列导入为文本,再核对数量和样本。
图 2. 预览编码和分隔符,将标识符列导入为文本,再核对数量和样本。

用不同特点的记录验证

多语言名单可选择各语言姓名、含逗号的地址和00123编号。引号包围的CSV字段中,逗号可能是内容而不是分隔符。全局替换每个逗号可能损坏地址。

先比较总行数和列数,再检查第一条、中间及最后一条记录。重要编号逐字符与原件对照。预览前几行正确并不能证明全部准确。记录编码、分隔符和文本列,方便其他人按相同方式重新导入。

如果已经保存乱码结果

错误解读后的保存可能替换原字符。不断把损坏文件改成不同编码不是可靠恢复方法,应从原下载或备份重新开始。导出新CSV时,确认接收者需要的编码、分隔符和字段规则,并重新导入输出文件测试。

官方资料:Microsoft UTF-8 CSV指南、文本及CSV导入导出、保留零和长数字。菜单随Excel版本和系统而变化。

相关实用文章

为帮助理解本文而制作的原创插画。