Кодек 'utf-8' не может декодировать байт 0xed при запуске sudo update-command-not-found

Как и в предыдущем вопросе, когда я пытаюсь запустить sudo update-command-not-found , я получаю эту ошибку

    Traceback (most recent call last):
  File "/usr/sbin/update-command-not-found", line 26, in <module>
    col.create(db)
  File "/usr/share/command-not-found/CommandNotFound/db/creator.py", line 94, in create
    self._fill_commands(con)
  File "/usr/share/command-not-found/CommandNotFound/db/creator.py", line 132, in _fill_commands
    self._parse_single_contents_file(con, f, fp.stdout)
  File "/usr/share/command-not-found/CommandNotFound/db/creator.py", line 228, in _parse_single_contents_file
    l = l.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 15: invalid continuation byte

Я пробовал много способов избавиться от этого . Проблемы, похоже, были связаны с проблемой «utf-8». Есть идеи?

0
задан 28 April 2020 в 15:30

3 ответа

У меня такая же проблема на Raspberry Pi после перехода с Raspbian Stretch на Raspbian buster.

В моем случае основная причина заключается в том, что инструмент apt изменил формат файлов, хранящихся в /var/lib/apt/lists/*Contents*, и теперь они кодируются с использованием Формат .lz4. Поэтому команда update-command-not-found больше не может их читать.

Вероятно, эту проблему можно решить с помощью новой версии инструмента «команда не найдена» (https://code.launchpad.net/command-not-found)

-1
ответ дан 8 September 2020 в 16:15

Для тех, у кого похожие проблемы, самое простое решение:

LC_ALL=C.UTF-8 update-command-not-found

И это работает для многих подобных проблем UTF-8, связанных с любыми установками. Поверь мне!

1
ответ дан 22 December 2020 в 12:43

Типы Unicode String — это удобная функция Python, которая позволяет вам декодировать закодированные строки и забыть о кодировке до тех пор, пока вам не понадобится записать или передать данные. Python пытается преобразовать массив байтов (байты, которые он считает строкой в ​​кодировке utf-8) в строку Unicode (str). Этот процесс, конечно же, является декодированием по правилам utf-8. Когда он пытается это сделать, он сталкивается с последовательностью байтов python , которая не разрешена в строках с кодировкой utf-8 (а именно это 0xff в позиции 0). Одним из простых способов избежать этой ошибки является кодирование таких строк с помощью функции encode() следующим образом (если a является строкой с символом, отличным от ascii):

a.encode('utf-8').strip()

Или

Используйте формат кодирования ISO-8859-1 для решения проблемы. проблема.

0
ответ дан 11 January 2021 в 09:33

Другие вопросы по тегам:

Похожие вопросы: