解决python保存csv文件Excel打开乱码的问题

目录

  • 一、问题引入
  • 二、问题分析
  • 三、解决方案

记录一次用Python保存csv文件出现除英文字母外,其他字符都是乱码的解决方案。

一、问题引入

通过以下语句将数据保存到data.csv文件中,指定编码格式为utf-8。

with open("data.csv", 'w',encoding="utf_8" ,newline='') as fp:
    writer = csv.writer(fp)
    writer.writerows(results)   

用excel打开data.csv出现乱码。
解决python保存csv文件Excel打开乱码的问题_第1张图片

二、问题分析

  • Excel 读取 csv 文件的时候是通过文件头上的 BOM 来识别编码的,如果文件头无 BOM 信息,则默认按照 Unicode 编码读取。
  • 当使用 utf-8 编码来生成 csv 文件的时候,并没有生成 BOM 信息,Excel 就会自动按照 Unicode 编码读取,就会出现乱码问题。

三、解决方案

因此需要给csv文件带上BOM信息,让Excel能识别到文件的编码格式,此时我们采用带BOM的编码格式uft-8-sig sig 全拼为 signature,即带有签名的 utf-8(UTF-8 with BOM),将原先的编码格式改成uft-8-sig的编码格式。

with open("data.csv", 'w',encoding="utf_8_sig" ,newline='') as fp:
    writer = csv.writer(fp)
    writer.writerows(results)

解决python保存csv文件Excel打开乱码的问题_第2张图片
参考资料

你可能感兴趣的:(python)