在python中读取pdf文件时使用编解码器的unicode错误

时间:2013-06-18 05:50:48

标签: python pdf unicode

我正在尝试阅读包含以下内容的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

2 个答案:

答案 0 :(得分:4)

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

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

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

但是在那时,你最好只使用普通open并读取字节。 Unicode用于文本,而不是数据。

答案 1 :(得分:1)

尝试将任意二进制数据解释为文本的问题除外,0xe2是拉丁语-1,而不是UTF-8。你使用的是错误的编解码器。

相关问题