You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python合并txt文件写入时报UnicodeEncodeError编码错误的原因与解决方法

故障原因
  • 核心触发原因是编码不匹配:读取源文件时显式指定了utf-8编码,但写入结果文件file3.txt时没有传入encoding参数,在Windows环境下Python会默认调用系统本地的charmap编码(通常为GBK/CP936)。当读入的utf-8内容包含该默认编码无法映射的字符时,就会抛出UnicodeEncodeError,和报错栈里的错误信息完全对应。
  • 原代码还存在逻辑笔误:两个文件读取块都打开了file2.txt,实际是重复读取同一个文件两次,根本没有实现两个不同文件的合并逻辑。
修复方案

修复时需要同时解决编码不一致和逻辑笔误两个问题,核心原则是所有文件读写操作都显式指定编码,不依赖系统默认值,修正后的可运行代码如下:

data = data2 = ""

# 读取第一个待合并的txt文件
with open('file1.txt', encoding='utf-8', mode='r') as fp:
    data = fp.read()

# 读取第二个待合并的txt文件
with open('file2.txt', encoding='utf-8', mode='r') as fp:
    data2 = fp.read()

# 拼接内容,两个文件内容间用换行分隔
data += "\n"
data += data2

# 写入合并结果,显式指定utf-8编码,避免触发系统默认编码的转码错误
with open('file3.txt', encoding='utf-8', mode='w') as fp:
    fp.write(data)

如果你的源文件本身不是用utf-8编码存储的(比如是Windows记事本默认保存的ANSI/GBK格式),只需要把读文件时的encoding参数改成对应编码值即可,只要保证读写编码和文件实际格式一致,就不会出现这类编码报错。

内容的提问来源于stack exchange,提问作者Teriyaki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 09:45:32