解决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出现乱码。
在这里插入图片描述

二、问题分析

  • 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)

在这里插入图片描述
参考资料

猜你喜欢

转载自blog.csdn.net/qq_43762434/article/details/131473930