当前位置: 首页 > 知识库问答 >
问题:

错误UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0xff:起始字节无效

谢翰学
2023-03-14

https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools

在上述站点上编译“process.py”时出错。

 python tools/process.py --input_dir data --            operation resize --outp
ut_dir data2/resize
data/0.jpg -> data2/resize/0.png

回溯(最近一次呼叫最后一次):

File "tools/process.py", line 235, in <module>
  main()
File "tools/process.py", line 167, in main
  src = load(src_path)
File "tools/process.py", line 113, in load
  contents = open(path).read()
      File"/home/user/anaconda3/envs/tensorflow_2/lib/python3.5/codecs.py", line 321, in decode
  (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode     byte 0xff in position 0: invalid start byte

错误的原因是什么?Python的版本是3.5。2.

共有3个答案

西门良才
2023-03-14

使用编码格式ISO-8859-1解决问题。

邢凯歌
2023-03-14

使用此解决方案,它将删除(忽略)字符并返回不带字符的字符串。仅当您需要剥离它们而不是转换它们时才使用此选项。

with open(path, encoding="utf8", errors='ignore') as f:

使用errors='ignore'只会丢失一些字符。但是,如果您不关心它们,因为它们似乎是源于一个错误代码的额外字符,那么连接到我的套接字服务器的客户端的格式和编程就很糟糕。那么这是一个简单直接的解决方案。参考

薛弘济
2023-03-14

Python尝试将字节数组(假定为utf-8编码字符串的bytes转换为unicode字符串(str)。这个过程当然是根据utf-8规则进行解码。当它尝试此操作时,会遇到utf-8编码字符串中不允许的字节序列(即位置0处的0xff)。

由于您没有提供任何我们可以查看的代码,因此我们只能猜测其他代码。

从堆栈跟踪中,我们可以假设触发操作是读取文件(内容=open(path). read())。我建议这样重新编码:

with open(path, 'rb') as f:
  contents = f.read()

打开()中的模式说明符中的b声明文件应被视为二进制文件,因此内容将保持为字节。没有解码尝试会以这种方式发生。

 类似资料: