目录
一、问题引入二、问题分析三、解决方案记录一次用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)
参考资料