python解决csv文件用excel打开乱码问题

【问题】python输出的csv文件用excel打开,里面的中文会变成乱码,但用window下的记事本或mac下的numbers打开就正常显示。原因是python输出的文件是utf-8编码写入的,excel默认以gbk方式读取,导致乱码发生。【解决方法1】文件产出时encoding设置为utf-8-sig    用excel打开csv时,...
python解决csv文件用excel打开乱码问题
【问题】

python输出的csv文件用excel打开,里面的中文会变成乱码,但用window下的记事本或mac下的numbers打开就正常显示。

原因是python输出的文件是utf-8编码写入的,excel默认以gbk方式读取,导致乱码发生。

【解决方法1】文件产出时encoding设置为utf-8-sig    

用excel打开csv时,excel会先检查文件的第一个字符,来了解这个文件是什么编码方式,如果这个字符是BOM,excel就知道用utf-8的方式打开这个文件。python自带了处理BOM的编码方式uft-8-sig,因此只需要在文件产出时将encoding设置为utf-8-sig。

如果文件不是由python产出的,只需要以utf-8方式读入再以utf-8-sig方式存储即可

【解决方法2】懒人法,适用只含简体中文的文件

用记事本打开,点击另存为,右下角编码方式选择“ANSI”,这个过程是把这个文件改成gbk编码格式,excel就是默认用gbk方式打开的。

参考: Python写的csv文件,如何让 Excel 双击打开不乱码? - 云+社区 - 腾讯云

对编码格式一窍不通的可以阅读以下网页

python笔记——二进制和文件编码_砍柴姑娘Jourosy的博客-CSDN博客

编码方式之ASCII、ANSI、Unicode概述 - 蓝海人 - 博客园

【简单总结】:

1. 首先需要了解 字符集 和 字符编码 两个概念,字符集定义了字符和二进制的一一对应关系,字符编码规定了如何将字符的编号存储到计算机中。

2. Unicode是字符集,包含了全球文字的唯一编码,utf-8是编码方式,将unicode以某种方式存储到计算机中。

3. 有些字符集和编码是结合在一起的,称作字符集还是编码都无所谓,比如ASCII,GBK

4. ANSI是各个国家地区不同扩展编码方式的总称,互不兼容(可以看出来通用性没有utf好)

5. 不同编码方式在转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。2022-06-24
mengvlog 阅读 6 次 更新于 2025-07-17 19:41:21 我来答关注问题0
  • 【解决方法1】文件产出时encoding设置为utf-8-sig    用excel打开csv时,excel会先检查文件的第一个字符,来了解这个文件是什么编码方式,如果这个字符是BOM,excel就知道用utf-8的方式打开这个文件。python自带了处理BOM的编码方式uft-8-sig,因此只需要在文件产出时将encoding设...

  •  文暄生活科普 Python+Excel:将CSV文件另存为Excel文件

    首先,您需要确保工作簿“成都火锅店.csv”在电脑的某目录中。在该目录下,将执行转换并生成新的Excel文件。接着,利用Python和pandas库,通过以下代码实现转换操作:import pandas as pd 加载CSV文件 df = pd.read_csv('成都火锅店.csv')将数据写入Excel文件,并重命名默认工作表为“火锅”with pd.E...

  •  阿暄生活 csv文件用什么打开

    默认打开:在安装有Excel的电脑上,CSV文件通常默认使用Excel打开。手动打开:如果CSV文件没有默认使用Excel打开,可以右键点击文件,选择“打开方式”,然后选择Excel。记事本或写字板:CSV文件是纯文本文件,因此也可以使用记事本或写字板打开。但这种方式显示的是文件的原始文本内容,包括逗号分隔的数据。专...

  •  校企律说法 csv文件怎么打开 使用Python读取和写入CSV文件

    CSV文件本质上是一种文本文件,其读取与写入可以通过两种主要方法实现。第一种方法是直接使用Python内置的文件读写功能,这种方式将每一行视为一条记录,通过逐行读取完成操作。这种方法的优点在于高度可控,但同时也意味着代码量较大,特别是在处理Python2中的编码问题时可能会遇到更多挑战。第二种方法则是...

  •  猪八戒网 python如何计算csv有多少行(python怎么csv求平均)

    csv模块是Python自带的,所以可以直接导入。要使用csv模块从CSV文件中读取数据,我们需要创建一个Reader对象。通过Reader对象,我们可以迭代遍历CSV文件中的每一行内容。运行结果:要用csv模块读取CSV文件,首先先使用open()函数打开它,就像打开任何其他文本文件一样。然后将它传递给csv.reader()函数。这个函数...

檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部