我从一个目录中获取数据,它给出的数据是字节格式的。
字节数据。
b'\x80\x00\x00\x00\n\x00\x00%\x83\xa0\x08\x01\x00\xbb@\x00\x00\x05p
\x02\x00>\xf3\x00\x00\x00}\x02\x00`\x03\xef0\x00\x00\r\xc0
\x06\xf0>\xf3\x00\x00\x02\x88\x02\x03\xec\x03\xef0\x00\x00/.....'
当把这些数据转换为字符串或任何可读格式时,我得到这个错误。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
我使用的代码(Python 3.7.3)。
blobs = blob.decode('utf-8')
AND":我使用的代码(Python 3.7.3):AND
import json
json.dumps(blob.decode())
我也用过 pickle
, ast
和 pprint
但他们在这里没有帮助。
我试了一下。
你可以尝试忽略那些不可读的块。
blobs.decode('utf-8', 'ignore')
这不是一个很好的解决方案,但是你生成字节对象的方式有一些问题。也许吧 utf-8
不是您数据的正确编码。
编码的 UTF-8编码 具有一定的内置冗余,至少有两个作用。
起始字节(以携带实际数据的二进制点为单位)与以下4种模式之一相匹配
0.......
110.....
1110....
11110...
而延续字节(0至3)的形式总是这样的。
10......
如果不遵守这个编码,可以肯定地说,这不是UTF-8数据,例如,因为在传输过程中发生了损坏。
为什么会有这样的说法呢?b'\x80\'
不能是UTF-8吗?在前两个字节就已经违反了编码规则:因为80必须是一个延续字节。这就是 恰恰 您的错误信息是什么?
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte.
即使你跳过这个问题,你也会在几个字节之后遇到另一个问题,在 b'%\x83'
所以很有可能是你试图解码错误的数据或者假设编码错误。