2

我正在尝试阅读包含以下内容的pdf文件:

%PDF-1.4\n%âãÏÓ

如果我用 open 读取它,它可以工作,但如果我尝试使用 codecs.open(filename, encoding="utf8", mode="rb") 获取 unicode 字符串,我得到以下异常:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xe2 in position 10: invalid continuation byte

您知道从该文件的内容中获取 unicode 字符串的方法吗?

PS:我正在使用python 2.7

4

2 回答 2

7

PDF 由二进制数据而非文本组成。它们不能有意义地表示为 Unicode 字符串。

对于它的价值,您可以通过将 PDF 视为 ISO8859-1 文本来获取包含这些特定字符的 Unicode 字符串:

f = codecs.open(filename, encoding="ISO8859-1", mode="rb")

但在这一点上,你最好只使用普通open和读取字节。Unicode 用于文本,而不是数据。

于 2013-06-18T05:53:30.990 回答
1

除了尝试将任意二进制数据解释为文本的问题外,0xe2 在 Latin-1 中是 â,而不是 UTF-8。您使用了错误的编解码器。

于 2013-06-18T05:55:55.443 回答