UnicodeDecodeError: кодек "utf8" не может декодировать байт 0x92 в позиции 377826: недопустимый начальный байт

Я получаю следующую ошибку при выполнении приведенного ниже фрагмента кода точно в строке if uID in repo.git.log():проблема в repo.git.log()Я посмотрел на все подобные вопросы о переполнении стека, которое предлагает использовать decode("utf-8"),

как мне конвертировать repo.git.log() в decode("utf-8")?

UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 377826: invalid start byte 

Relavant код:

..................
uID = gerritInfo['id'].decode("utf-8")                                            
if uID in repo.git.log():
        inwslist.append(gerritpatch)      
.....................


Traceback (most recent call last):
  File "/prj/host_script/script.py", line 1417, in <module>
    result=main()
  File "/prj/host_script/script.py", line 1028, in main
    if uID in repo.git.log():
  File "/usr/local/lib/python2.7/dist-packages/git/cmd.py", line 431, in <lambda>
    return lambda *args, **kwargs: self._call_process(name, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/git/cmd.py", line 802, in _call_process
    return self.execute(make_call(), **_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/git/cmd.py", line 610, in execute
    stdout_value = stdout_value.decode(defenc)
  File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 377826: invalid start byte

4 ответа

Использование encoding='cp1252' решит вопрос.

0x92 - это умная цитата (') Windows-1252. Он просто не существует в Unicode, поэтому он не может быть декодирован.

Может быть, ваш файл был отредактирован на компьютере с Windows, который в основном вызвал эту проблему?

После хороших исследований я нашел решение. В моем случае, datadump.jsonфайл имел проблему.

  • Просто откройте файл в формате блокнота
  • Нажмите «Сохранить как вариант».
  • Перейдите в раздел кодирования ниже и нажмите «UTF-8».
  • Сохраните файл.

Теперь вы можете попробовать запустить команду. Вам хорошо идти :)

Для справки я прикрепил изображения ниже.

Шаг 1

Шаг 2

Шаг 3

0x92 не существует в кодировке UTF-8. Как заявил Exceen в своем ответе, 0x92 используется в Windows-1252 как умная цитата. Чтобы решить эту проблему, используйте кодировку Windows 1252 или обновите умную цитату до обычной.

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