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 ответа
0x92 - это умная цитата (') Windows-1252. Он просто не существует в Unicode, поэтому он не может быть декодирован.
Может быть, ваш файл был отредактирован на компьютере с Windows, который в основном вызвал эту проблему?
После хороших исследований я нашел решение. В моем случае,
datadump.json
файл имел проблему.
- Просто откройте файл в формате блокнота
- Нажмите «Сохранить как вариант».
- Перейдите в раздел кодирования ниже и нажмите «UTF-8».
- Сохраните файл.
Теперь вы можете попробовать запустить команду. Вам хорошо идти :)
Для справки я прикрепил изображения ниже.
0x92 не существует в кодировке UTF-8. Как заявил Exceen в своем ответе, 0x92 используется в Windows-1252 как умная цитата. Чтобы решить эту проблему, используйте кодировку Windows 1252 или обновите умную цитату до обычной.