【发布时间】:2020-01-17 00:14:29
【问题描述】:
我想要做的:从 pdf 文件中提取文本信息并将其重定向到 txt 文件。
我做了什么:
pip install pdfminor
pdf2txt.py file.pdf > output.txt
我得到了什么:
UnicodeEncodeError: 'gbk' codec can't encoding character '\u2022' in position 0: 非法多字节序列
我的观察:
\u2022 是要点,•。
pdf2txt.py 无需重定向即可正常工作:项目符号字符被写入标准输出而没有任何错误。
我的问题:
为什么重定向会导致 python 错误?据我所知,重定向是一个操作系统。工作,它只是在程序完成后复制东西。
如何解决此错误?我无法对pdf2txt.py 进行任何修改,因为它不是我的代码。
【问题讨论】:
-
Python 需要知道输出使用什么编码。它可以根据输出到终端还是文件来选择不同的编码。
-
好的,谢谢马克,有什么解决方法的建议吗?
-
我认为有一个环境变量会影响它,但我现在没有时间查找它。
-
没关系,我可以等其他人帮我。非常感谢您回答我。
-
通常 Python 在发送到终端之前获取终端使用的编码来对文本进行编码,但是当您重定向时,它无法从终端获取编码 - 您必须在 python 脚本中手动设置编码 - 可能在每个
print()
标签: python decode encode io-redirection