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

Python中如何将Unicode字符串写入文本文件?解决编码报错问题

解决Python写入Unicode中文字符到文本文件的编码错误

这个问题我熟!你遇到的是Python处理文件编码时的常见坑——Windows系统默认的文件编码(比如cp1252这类charmap编码)没法覆盖所有中文字符的Unicode编码点,所以写入时才会抛出 UnicodeEncodeError。

核心解决方案

解决的关键非常简单:打开文件时显式指定编码为utf-8,不管是读取输入文件还是写入输出文件,都加上这个参数就能解决绝大多数Unicode编码问题。

修改后的完整代码

我帮你调整了代码,同时推荐使用with语句(Python处理文件的最佳实践),它会自动帮你管理文件资源,避免忘记关闭文件的问题:

def translateDesc(fileName):
    # 用with语句打开输入文件,指定utf-8编码读取
    with open(fileName, "r", encoding="utf-8") as textFile:
        fileLines = textFile.readlines()
    
    # 逐行翻译生成输出列表
    outputList = []
    for line in fileLines:
        outputList.append(translateLines(line))
    
    # 用with语句打开输出文件,指定utf-8编码写入
    with open("output.txt", "w+", encoding="utf-8") as outputFile:
        outputFile.writelines(outputList)

为什么这么做?

  • encoding="utf-8" 告诉Python使用UTF-8编码格式来读写文件,UTF-8是通用的Unicode编码方案,支持所有中文及其他语言的字符
  • with 语句会在代码块执行完毕后自动关闭文件,既避免了手动调用close()的繁琐,也能防止因异常导致的文件资源泄漏

如果你的translateLines函数返回的是字节流而非字符串,需要先解码为Unicode字符串再写入,但根据你的错误信息,应该已经返回了正确的字符串,所以直接指定编码即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:02:34