说明网
电脑网络 1 个回答

Python脚本中如何正确设置文件编码以支持中文读写和输出?

lzx 提问者

发布于 2026-10-20

问题补充

在Python中处理中文,需在open()函数中显式指定encoding='utf-8',并在脚本首行添加编码声明。同时需确保终端或IDE的编码环境一致,以避免乱码。

1 个回答

按发布时间排序
cypc 回答者

回答于 2026-10-20

在Python脚本中正确设置文件编码以支持中文读写和输出,核心在于显式指定编码格式并保持环境一致。

直接回答

读取或写入包含中文的文件时,必须在open()函数中通过encoding参数指定编码(通常为utf-8)。对于控制台输出,需确保运行环境的默认编码支持中文。

具体步骤

  1. 源码文件编码声明:在Python脚本的第一行或第二行添加 # -*- coding: utf-8 -*-。这在Python 2中是必需的,在Python 3中虽默认使用UTF-8,但显式声明有助于编辑器识别。
  2. 文件读写操作:使用open()函数时,始终传入encoding参数。
    # 写入中文
    with open('test.txt', 'w', encoding='utf-8') as f:
        f.write('中文内容')
    
    # 读取中文
    with open('test.txt', 'r', encoding='utf-8') as f:
        content = f.read()
    
  3. 控制台输出:若使用print()输出中文出现乱码,可检查并设置环境变量 PYTHONIOENCODING=utf-8,强制标准输入输出使用UTF-8编码。

判断依据

  • 如果未指定encoding,Python会使用操作系统默认的编码(如Windows下常为gbk,Linux/macOS下常为utf-8),跨平台运行时极易引发UnicodeDecodeError或UnicodeEncodeError。
  • 报错信息中包含codec can't decode或codec can't encode即表明编码不匹配。

适用条件

  • 适用于Python 3.x版本。Python 2的字符串处理机制不同,需额外区分str与unicode类型。
  • 文本文件(.txt, .csv, .json等)需要指定编码;二进制文件(如图片、音频)使用'rb'或'wb'模式,无需且不能指定encoding。

常见误区

  1. 依赖系统默认编码:认为在自己电脑上运行正常即可,忽略了不同操作系统默认编码的差异,导致代码在其他机器上报错。
  2. 混淆文件保存编码与代码声明编码:源码文件本身必须以UTF-8格式保存在磁盘上,仅在代码里写声明而实际文件存为GBK依然会出错。
  3. 对二进制流使用encoding参数:在以b模式打开文件时传入encoding参数会导致TypeError。

内容由网友提供,仅供参考。