Задать вопрос
@alekssamos
Программист любитель

Исправить fulltext get UnicodeDecodeError? Ignore не помогает?

Как исправить кодировку? ignore не помогает. Заранее знать кодировку файла тоже невозможно.

Библиотека
https://github.com/btimby/fulltext
Мой код:
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import fulltext  as ft
import sys
debug = True

def gt(f):
	encodings = ("utf8", "cp1251")
	t = ""
	for encoding in encodings:
		e = None
		try:
			t = ft.get(f, encoding = encoding, encoding_errors = 'ignore')
			break
		except UnicodeDecodeError:
			e = sys.exc_info()
	if t == "" and e[0] == UnicodeDecodeError:
		raise e[1]
	return t

print(gt("book.epub"))

Ошибка:
'utf-8' codec can't decode byte 0xfb in position 10: invalid start byte
Traceback (most recent call last):
  File "ft.py", line 31, in <module>
    print(gt(sys.argv[1]))
  File "ft.py", line 20, in gt
    raise e[1]
  File "ft.py", line 15, in gt
    t = ft.get(f, encoding = encoding, encoding_errors = 'ignore')
  File "/usr/local/lib/python3.7/site-packages/fulltext/__init__.py", line 154,                                                                                         in get
    backend, path_or_file, mime=mime, name=name, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/fulltext/__init__.py", line 90, i                                                                                        n _get_path
    return backend._get_file(f, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/fulltext/backends/__text.py", lin                                                                                        e 20, in _get_file
    text = f.read(BUFFER_MAX)
  File "/usr/local/lib/python3.7/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfb in position 10: invalid                                                                                         start byte
root@v43195:/var/www/html/stc# clear
root@v43195:/var/www/html/stc# python3 ft.py  Davydenko_Uchilka.508202.fb2.epub
'utf-8' codec can't decode byte 0xfb in position 10: invalid start byte
Traceback (most recent call last):
  File "ft.py", line 31, in <module>
    print(gt(sys.argv[1]))
  File "ft.py", line 20, in gt
    raise e[1]
  File "ft.py", line 15, in gt
    t = ft.get(f, encoding = encoding, encoding_errors = 'ignore')
  File "/usr/local/lib/python3.7/site-packages/fulltext/__init__.py", line 154,                                                                                         in get
    backend, path_or_file, mime=mime, name=name, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/fulltext/__init__.py", line 90, i                                                                                        n _get_path
    return backend._get_file(f, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/fulltext/backends/__text.py", lin                                                                                        e 20, in _get_file
    text = f.read(BUFFER_MAX)
  File "/usr/local/lib/python3.7/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfb in position 10: invalid                                                                                         start byte
  • Вопрос задан
  • 39 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@alekssamos Автор вопроса
Программист любитель
В pip старая версия. На Github новая.
Чтобы исправить выполняем:
pip install git+https://github.com/btimby/fulltext.git

и установится новая версия.
Если выполнить просто pip install fulltext тогда установится старая версия.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
19 февр. 2025, в 21:51
50000 руб./за проект
19 февр. 2025, в 21:33
150000 руб./за проект
19 февр. 2025, в 21:08
30000 руб./за проект