我试图打开一个文件,但一直收到错误(解码错误)。我终于遇到了关于stackoverflow的一个话题,并且更进了一步。但是,当我尝试遍历我的文件时,现在我没有得到任何结果。该文件是uTorrent的设置文件。我对Python和编程很新,所以我想我可以尝试从该文件中读取并提取一些参数。
getDir = r'{0}/{1}/{2}/AppData/Roaming/uTorrent/settings.dat'.format(partition,
"Users", user)
data = []
try:
with codecs.open(getDir, "r") as f:
for lines in f:
data.append(lines)
except UnicodeEncodeError:
pass
我使用UnicodeEncodeError时出错,但没有其他异常。我已尝试使用/不使用codecs.open并在open函数中指定解码类型,我也使用了ignore。代码通过,但列表仍然是空的。
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 1962: character maps to <undefined>
该代码可以与同一目录中的其他文件一起使用。我检查了文件,有一些奇怪的字符。示例如下。
RÉ” tÝï:Q‘æІ•
非常感谢帮助和感谢一个很棒的网站!
答案 0 :(得分:0)
<强>摘要强>
打开文件时需要指定编码。如果编码是&#39; utf-16&#39;它会是这样的,但是从您给出的示例中可能不是。
with codecs.open(getDir, "r", encoding="utf-16") as f:
错误处理
您还可以通过输入参数&#39; errors&#39;来指定您希望如何处理错误。这允许您替换未知字符或忽略它们。有关详细信息,请参阅此处:http://docs.python.org/2/library/codecs.html#codec-base-classes
补充阅读
您可能想知道如何确定编码?总之,您需要被告知编码是什么。这是一个以简洁易懂的方式描述编码和解码的链接:http://www.joelonsoftware.com/articles/Unicode.html