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
相关产品推荐
相关产品推荐

