我正在尝试阅读包含以下内容的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
答案 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。你使用的是错误的编解码器。