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

Я пытаюсь закодировать Gerrit UID в UTF-8 и сталкиваюсь с ошибкой ниже, это работает большую часть времени, но случайно сталкивается с ошибкой ниже для некоторых UID, я посмотрел на аналогичные посты на stackru, которые предлагают, чтобы попытаться ISO-8859-1, но У меня больше всего работает utf-8, как это исправить?

uid = Ia7324f6443b3db5d55113a221dc0791bb5a38799
uID = gerritInfo['id'].encode("utf-8")

Стек ошибок:-

 result=main()
  File "/prj/team/location/script", line 1363, in main
    (picked_gerrit,uID,email_state) = cherrypick_gerrit(buildDir,manifest,gerrit,patch,False,errorLog,picklogfd)
  File "/prj/team/location/script", line 356, in cherrypick_gerrit
    if uID in repo.git.log():
  File "/usr/local/lib/python2.7/dist-packages/git/cmd.py", line 450, in <lambda>
    return lambda *args, **kwargs: self._call_process(name, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/git/cmd.py", line 902, in _call_process
    return self.execute(make_call(), **_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/git/cmd.py", line 698, 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 0xf6 in position 178175077: invalid start byte

2 ответа

Решение

Основываясь на https://github.com/gitpython-developers/GitPython/issues/237, вы можете попробовать что-то вроде ниже, используйте stdout_as_string=False

if uID in repo.git.log(stdout_as_string=False)

Добавлять # coding=utf-8 в первую строку файла Python.

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