尝试打开文件时出现UnicodeDecodeError

时间:2014-02-12 17:57:29

标签: python eclipse python-3.x

我试图打开一个文件,但一直收到错误(解码错误)。我终于遇到了关于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‘æІ•

非常感谢帮助和感谢一个很棒的网站!

1 个答案:

答案 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