2

我正在使用pdftotext选项“-enc utf-8 -htmlmeta -raw”并将其传递给解析输出的python脚本。(即使您不熟悉 pdftotext,也请继续阅读,因为这可能不相关。)

对于我们正在处理的一些 pdf,pdftotext 正在输出如下所示的元数据:

<meta name="CreationDate" content="<FE><FF>">

在python中,我正在这样做(基本上):

attrib[name] = content.decode('utf-8')

上述元数据中的字符串在content哪里。<FE><FF>Python引发了一个异常:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xfe in position 0: unexpected code byte

在这一点上,我不确定问题是 PDF 本身,还是 pdftotext 的输出,还是 Python 解释 utf-8 的方式。

我用谷歌搜索并没有发现任何结论。

本质上,我希望pdftotext -enc utf-8只输出有效utf-8。我希望 Python 在解码时能够理解如何处理该 utf-8。我缺少其中的某些部分吗?

我将不胜感激任何帮助理解为什么会发生这种情况,并帮助解决方案。

谢谢!

4

1 回答 1

2

两件事情:

首先,不要使用 ,而是content.decode('utf-8')使用:

content.decode('utf-8-sig')

这将自动删除 BOM(如果存在)。

其次,它看起来像是pdftotext在输出 UTF-16 BOM,而不是 UTF-8。UTF-8 BOM 是 '\xEF\xBB\xBF'。您需要弄清楚为什么要使用 UTF-16,或者将脚本更改为从 UTF-16 解码。

于 2012-11-29T03:31:57.143 回答