Windows UnicodeDecodeError:&x27;utf8';编解码器可以';t解码位置377826中的字节0x92:无效的开始字节
我在repo.git.log()中执行下面的代码片段时,在第Windows UnicodeDecodeError:&x27;utf8';编解码器可以';t解码位置377826中的字节0x92:无效的开始字节,windows,git,github,encoding,utf-8,Windows,Git,Github,Encoding,Utf 8,我在repo.git.log()中执行下面的代码片段时,在第行(如果uID为uID)处遇到了以下错误:, 问题在于repo.git.log(),我已经研究了所有关于堆栈溢出的类似问题,建议使用decode(“utf-8”) 如何将repo.git.log()转换为解码(“utf-8”) 相关代码: .................. uID = gerritInfo['id'].decode("utf-8")
行(如果uID为uID)处遇到了以下错误:
,
问题在于repo.git.log()
,我已经研究了所有关于堆栈溢出的类似问题,建议使用decode(“utf-8”)
如何将repo.git.log()
转换为解码(“utf-8”)
相关代码:
..................
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
。。。。。。。。。。。。。。。。。。
uID=gerritInfo['id'].解码(“utf-8”)
如果repo.git.log()中存在uID:
inwslist.append(gerritpatch)
.....................
回溯(最近一次呼叫最后一次):
文件“/prj/host_script/script.py”,第1417行,在
结果=main()
文件“/prj/host_script/script.py”,第1028行,主目录
如果repo.git.log()中存在uID:
文件“/usr/local/lib/python2.7/dist-packages/git/cmd.py”,第431行,在
返回lambda*args,**kwargs:self.\u调用\u进程(名称,*args,**kwargs)
文件“/usr/local/lib/python2.7/dist packages/git/cmd.py”,第802行,在调用过程中
返回self.execute(make_call(),**kwargs)
文件“/usr/local/lib/python2.7/dist-packages/git/cmd.py”,执行中的第610行
标准输出值=标准输出值。解码(防御)
文件“/usr/lib/python2.7/encodings/utf_8.py”,第16行,解码
返回编解码器.utf_8_解码(输入,错误,真)
UnicodeDecodeError:“utf8”编解码器无法解码位置377826中的字节0x92:无效的开始字节
0x92是Windows-1252的智能引用(')。它根本不存在于unicode中,因此无法解码
可能您的文件是由Windows计算机编辑的,这基本上导致了这个问题?使用
encoding='cp1252'
可以解决这个问题。什么Python模块提供了repo.git.log()
调用?这是什么版本的Python?异常的完全回溯是什么?@MartijnPieters-它发生在Python2.7.3和Python2.7.5中,用完全回溯更新了问题。错误发生在repo.git.log()
命令的内部,我想是因为git
命令产生的输出不产生UTF-8。这可能是因为git日志包含非UTF-8数据,也可能是因为其他原因。我不知道哪个项目提供了git
包。@MartijnPieters-我们可以做一些类似repo.git.log=repo.git.log(encode('utf-8'))的事情吗…或者去掉正确的单引号..语法是什么?你不能,不知道。我不知道运行了什么hit命令,也不知道什么会影响此处使用的编解码器。这也是我的问题,如何确保repo.git.log()具有正确的字符编码以消除此错误?Windows-1252中的0x92只是Unicode中代码点的一种编码。声明它在Unicode中不存在是。。不正确;在UTF8中,应将其编码为0xE2 0x80 0x99。如果这是关于编码为CP-1252的数据,那么这就意味着某个地方存在编码错误。这为我解决了这个问题!简单到用这种编码读取文件。
..................
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