查找主体是否包含压缩数据
finding whether the body contains gzipped data
我有一个程序,其中它从curl请求中搜索特定字符串的回复。我有时会收到压缩过的数据。是否有办法找到是否回复是文本或压缩格式?Header有时包含gziippped,deflate Header,但不一致。是否有一种方法来搜索字符串并发现它是否被压缩了?
您可以尝试查看数据的前两个字节。对于gzip数据,它们应该是0x1f, 0x8b。
Member header and trailer
ID1 (IDentification 1)
ID2 (IDentification 2)
These have the fixed values ID1 = 31 (0x1f, 37), ID2 = 139 (0x8b, 213),
to identify the file as being in gzip format.
您可以查看文件的第一个字节。也许它们包含一个神奇的数字
gzip文件格式以一些"magic bytes"开头。您可以检查正文是否以这些开头,如果是,则将这些字节推回流并开始解压缩。
您可以将它通过zcat管道传输,如果失败,则按原样使用字符串。我知道马虎,但它应该是可靠的;纯文本文件永远不会包含有效的gzip数据。
符合标准的HTTP响应将包含一个Content-Encoding:或Transfer-Encoding:报头,指定压缩响应的"gzip",从而消除了通过查看魔术数字来猜测的需要。然而,不幸的是,许多网站都把这些标题搞错了。
相关文章:
- 我觉得我放入结构中的输入代码可以压缩,关于如何在保持代码简短的同时保持数据个性化的任何建议?
- 在编译时解压缩数组扩展数据块 (C++11/14)
- 解压缩 TIFF 数据会打印随机字符
- 解压缩压缩的 TIFF 数据
- 键:: MAP或类似数据结构中的键压缩
- 在压缩和未压缩数据之间切换
- 使用 boost zlib 从 std::vector 中的文件中读取压缩的 zraw 数据
- 运行长度编码算法[数据压缩].
- DXT3(BC2)压缩格式alpha数据
- C/C++:在不使用临时文件的情况下压缩(gz)数据
- 用于大型数据流的通货紧缩压缩算法
- 随时随地压缩/解压缩数据
- 在发送数据之前压缩数据 - 控制字符
- 实现部分写入压缩数据的存储写入程序
- DICOM 访问压缩数据 (DCMTK)
- 如何使用Boost解压缩压缩数据的矢量
- 使用fwrite C++将压缩数据写入文件
- 套接字中压缩数据的优点
- 编写C++程序压缩/解压缩数据
- 查找主体是否包含压缩数据