«UnicodeDecodeError: кодек« utf-8 »не может декодировать байт 0xad в позиции 2491: недопустимый начальный байт» - PullRequest
0 голосов
/ 02 ноября 2018

В этом коде:

subprocess.getoutput('./pdftotext file.pdf -')

Также я попробовал UTF-16:

subprocess.check_output('./pdftotext file.pdf -', shell=True, encoding='utf-16')

PDF из https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf,, но я вижу ту же ошибку (с другим байтовым значением) для другого PDF.

Этот PDF от Mozilla хорошо работает с чистым Bash без Python.

Также я пробовал параметр universal_newlines=True, например:

return subprocess.run(
      './pdftotext file.pdf -',
      shell=True,
      stdout=subprocess.PIPE,
      universal_newlines=True
).stdout

Python 3.6 для Lambda.

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Попробуйте следующий код:

return subprocess.run(
      './pdftotext file.pdf -',
      shell=True,
      stdout=subprocess.PIPE,
      universal_newlines=True,
      encoding='your encoding',
      errors='ignore', # 'ignore' or 'replace'
).stdout

Подробнее о: https://docs.python.org/3/library/stdtypes.html#bytes.decode https://docs.python.org/3/library/codecs.html#error-handlers

0 голосов
/ 02 ноября 2018

Вывод «Filter» с iconv - с игнорированием ошибок:

subprocess.getoutput('./pdftotext file.pdf - | iconv --to-code utf-8//IGNORE')

Не стесняйтесь добавлять свои ответы - просто интересуйтесь альтернативными решениями и корнем проблемы.

...