首页 > 解决方案 > Base64 编码文件显示“GZIP”,但在 Python 中对其进行解码会输出损坏的 HTML

问题描述

我无法从旧备份(Windows 系统)的文件中读取数据。

示例内容的外观:

GZIP
-}_HTML>

<H AD>

<META HTTP-EQUV="Conten-Type" CO!TENT="tex/html; chrset=wind&ws-1252">

它几乎是正确的 HTML……但有些字符已损坏。

在 Base64 中,它看起来像这样:

R1pJUAwAAAAKAAAALX0AAF9IVE1MPg0KPEggQUQ+DQo8TUVUQSBIVFRQLUVRVQ5WPSJDb250ZW4ZLVR5cGUiIENPIVRFTlQ9InRleBwvaHRtbDsgY2gTcnNldD13aW5kJndzLTEyNTIi

由于顶部显示“GZIP”,因此我尝试在 Python 中使用 gzip 对其进行解压缩。

import zlib
import base64

s = "R1pJUAwAAAAKAAAALX0AAF9IVE1MPg0KPEggQUQ+DQo8TUVUQSBIVFRQLUVRVQ5WPSJDb250ZW4ZLVR5cGUiIENPIVRFTlQ9InRleBwvaHRtbDsgY2gTcnNldD13aW5kJndzLTEyNTIi"

s = base64.b64decode(s.encode('Latin1'))

zlib.decompress(s, 31)

虽然我收到了错误:

zlib.error:解压缩数据时出现错误-3:标头检查不正确

与此代码相同:

import gzip

s = gzip.decompress(s)
s = str(s,'utf-8')

print(s)

gzip.BadGzipFile:不是 gzip 压缩文件 (b'GZ')

知道如何从该文件中恢复数据吗?

标签: base64gziprecovery

解决方案


它既不是 gzip 也不是任何形式的压缩。尽管顶部有“GZIP”一词。这就是你所看到的。


推荐阅读