我在读取文件、处理其字符串并保存到 UTF-8 文件时遇到问题。
这是代码:
try:
filehandle = open(filename,"r")
except:
print("Could not open file " + filename)
quit()
text = filehandle.read()
filehandle.close()
然后我对可变文本进行一些处理。
接着
try:
writer = open(output,"w")
except:
print("Could not open file " + output)
quit()
#data = text.decode("iso 8859-15")
#writer.write(data.encode("UTF-8"))
writer.write(text)
writer.close()
这完美地输出了文件,但根据我的编辑器,它是在 iso 8859-15 中输出的。由于同一编辑器将输入文件(在变量文件名中)识别为 UTF-8,我不知道为什么会这样。据我的研究表明,注释行应该可以解决问题。但是,当我使用这些行时,生成的文件主要是特殊字符的乱码,带有波浪号的单词,因为文本是西班牙语。我真的很感激任何帮助,因为我很困惑….
原文由 aarelovich 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
open
和encoding
参数在程序的 I/O 边界处理进出 Unicode 的文本。确保使用正在读取的文件的(希望有记录的)编码。默认编码因操作系统而异(具体而言,locale.getpreferredencoding(False)
是使用的编码),因此我建议始终明确使用encoding
参数以实现可移植性和清晰性(下面的 Python 3 语法):如果仍在使用 Python 2 或为了 Python 2⁄3 兼容性,
io
模块实现open
与 Python 3 的open
具有相同的语义,并且存在于两个版本中: