如何阅读“C源,ISO-8859文本”

时间:2013-06-02 13:59:02

标签: python unicode

我有这个myfile(我已经粘贴了,我希望有关问题的相关数据能够在复制/粘贴中幸存下来)。我尝试用以下内容读取该文件:

import codecs
codecs.open('myfile', 'r', 'utf-8').read()

但是这给了:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xe5 in position 7128: invalid continuation byte

如果我检查文件:

» file myfile
myfile: C source, ISO-8859 text
  • 如何在python中阅读那种文件(ISO-8859)?
  • 在一般情况下,我如何知道文件的编码方式?

我很多次处理我没有生成的文件(系统文件,从互联网上下载的随机文件,供应商,客户提供的随机文件......):这些文件没有提供线索他们正在使用的编码。在多文化环境(欧洲)中,很难知道这些文件是如何编码的。大多数时候,即使是提供文件的人也没有关于编码的线索,这可以通过选择的编辑器/工具在幕后发生。如何确定所使用的编码,逐个文件?

2 个答案:

答案 0 :(得分:12)

使用python 3.3,您可以使用内置的开放功能

open("myfile",encoding="ISO-8859-1")

答案 1 :(得分:11)

您更改open()命令中的编解码器; ISO-8859标准有多个编解码器,我在这里为你选择了Latin-1,但你可能需要选择另一个:

codecs.open('myfile', 'r', 'iso-8859-1').read()

有关有效编解码器的列表,请参阅codecs module。根据pastie数据判断,iso-8859-1是正确使用的编解码器,因为它适用于斯堪的纳维亚文本。

通常,如果没有其他来源,您无法知道文件使用的编解码器。充其量,你可以猜测(这是file的作用)。