解码字节

4
以下代码片段来自zipfile.py文件。
   self.fp.write(zinfo.FileHeader())

   def FileHeader(self):

       header = struct.pack(structFileHeader, stringFileHeader,
                 self.extract_version, self.reserved, flag_bits,
                 self.compress_type, CRC, dosdate, CRC,
                 compress_size, file_size,
                 len(filename), len(extra))
       return header + filename + extra

在其他文件中:

  // Some other codes.....


  zip_file = zip_dir(self.upload_dir)

  zip_file.getvalue()

我的问题:

'zip_file.getvalue()'的结果如下:

...b'PK\x03\x04\x14\x00\x00\x00\x00\x00\x00\x00O>\x9f\xec\x04\xd0\x06\x00\x00\x00\x06\x00\x00\x00\n\x00\x00\x00index.htmlyellowPK\x01\x02\x14\x03\x14\x00\x00\x00\x00\x00\x84\x93O>\x9f\xec\x04\xd0\x06\x00\x00\x00\x06\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00index.htmlPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x008\x00\x00\x00.\x00\x00\x00\x00\x00'

如果我尝试解码,即

zip_file.getvalue().decode()

它会显示:

'utf8'编解码器无法解码第14个位置的0x9f字节:意外的代码字节

上面的内容是否可以解码?


getvalue() 的结果是二进制 ZIP 表示形式。你希望从“解码”中得到什么?它不是文本,所以你不能将其解码为 Unicode。我不知道你想要实现什么 - 你想打开一个 ZIP 文件吗? - AndiDog
我得到的值是 b'something',我只想将 b'something' 转换为 'something',但我不确定是否能够实现。 - pkumar
这根本就毫无道理。你应该首先明白 Python 3 中字节和字符串的区别。上述内容是一个 ZIP 文件的二进制内容。 - AndiDog
1个回答

4

这里没有需要解码的内容。这些字节是一个zip文件,你可以通过巧妙地使用 zipfile 来提取归档文件的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接