【发布时间】:2013-07-22 14:34:46
【问题描述】:
这里有 2 个代码示例,Python3:第一个使用 latin1 编码写入两个文件:
s='On écrit ça dans un fichier.'
with open('spam1.txt', 'w',encoding='ISO-8859-1') as f:
print(s, file=f)
with open('spam2.txt', 'w',encoding='ISO-8859-1') as f:
f.write(s)
第二个读取相同编码的相同文件:
with open('spam1.txt', 'r',encoding='ISO-8859-1') as f:
s1=f.read()
with open('spam2.txt', 'r',encoding='ISO-8859-1') as f:
s2=f.read()
现在,打印 s1 和 s2 我得到了
On écrit ça dans un fichier.
而不是最初的“On écrit ça dans un fichier”。
怎么了?我也尝试过 io.open 但我错过了一些东西。有趣的是,我对 Python2.7 和它的 str.decode 方法没有这样的问题,现在已经消失了......
有人可以帮我吗?
【问题讨论】:
-
您是否 100% 确定文件是使用 Latin-1 编码编写的?这看起来非常像 UTF-8 数据..
-
>>> 'On écrit ça dans un fichier.'.encode('utf8').decode('latin1')给'On écrit ça dans un fichier.'