首页 > 解决方案 > 我如何解码字节字符串以存储在没有空字节和人类可读的字符串变量中?

问题描述

我从 zip 文件中的文本文件中读取了一些行,并且必须修改为可读字符串。例如,我从文件显示中得到的一行是这样的:

byte_code = b"\x000\x002\x002\x008\x007\x00:\x00,\x00'\x001\x004\x00.\x001\x002\x00.\x002\x000\x001\x009\x00 \x002\x000\x00:\x002\x008\x00:\x002\x007\x00'\x00,\x00$\x000\x001\x00F\x00B\x00,\x00,\x00,\x00,\x00\r\x00\n"

如果我解码并打印它,我会得到一个 readabel 结果(所以输出中有一些空字节,我无法输入她

print(byte_code.decode('latin-1'))

我想得到可读的结果,就像打印函数进入一个没有空字节的普通字符串变量一样,我期望这一行

02287:,'14.12.2019 20:28:27',$01FB,,,,

但是如果我将解码行分配给一个字符串变量,我会得到这个不可读的字符串

mystr = byte_code.decode('latin-1')
mystr
Out[55]: "\x000\x002\x002\x008\x007\x00:\x00,\x00'\x001\x004\x00.\x001\x002\x00.\x002\x000\x001\x009\x00 \x002\x000\x00:\x002\x008\x00:\x002\x007\x00'\x00,\x00$\x000\x001\x00F\x00B\x00,\x00,\x00,\x00,\x00\r\x00\n"

字节串的解码是否具有正确的编码格式?我如何获得没有空字节的正确可读字符串?

标签: python-3.xprintingdecodeiso-8859-1

解决方案


这可能不是完美的答案,但它可能是一个快速的解决方案,直到出现更好的解决方案。

byteLine = b"\xff\xfe0" + byte_code + b"\x00"

strLine = byteLine.decode('utf16')

那么 strLine 值是:

    In [1] : strLine
    Out[2] : "002287:,'14.12.2019 20:28:27',$01FB,,,,\r\n"

推荐阅读