1

我想将网页存储在压缩文本文件 (CSV) 中。为了实现最佳压缩,我想提供一组 1000 个网页。然后,图书馆应该花一些时间为此内容创建最佳“字典”。一个明显的“字典”条目可能是<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,它可以存储为 %1 或类似的东西,因为它几乎出现在所有网页上。通过创建这样的自定义字典,在我的情况下压缩率应该是 99%。

我的问题是,在具有 MIT 或类似自由许可的 Windows 上是否存在用于执行此操作的库?如果没有,您是否会推荐任何通用压缩库。我已经尝试过使用 zlib,但它输出二进制数据。如果我将此二进制数据转换为文本,我担心结果可能比原始文本长。

编辑:我需要能够将文本存储在 CSV 文件中,并且仍然能够将它们导入数据库甚至 Excel。

4

1 回答 1

4
  1. “文本文件(不是二进制文件)”有点太笼统了。如果您的意思是不能使用某些字节值(00,1A 或其他),则可以使用任何二进制方法 + 类似 base64 编码的方法。(虽然我会从Coroutine 演示源中建议一种更有效的方法)。

    具体来说,您可以使用任何通用压缩器来压缩您的基本文件,然后是基本文件+目标文件,然后对它们进行比较,您将得到一个字典压缩(二进制),然后可以将其转换为“文本”使用 base64 或 yenc 或其他。

    或者,有一些内置支持的编码器,例如
    http://compression.ru/ds/ppmtrain.rar
    http://code.google.com/p/lzham/

  2. 如果您确实希望将常用短语替换为引用,并且所有其他内容都保持不变(有点暗示,但不等于“文本输出”),您可以使用文本预处理器,例如:http:
    //xwrt.sourceforge.net /http://compression.ru/ds/liptify.rar (还有更公平的)

  3. 混合方法也是可能的。您可以使用 [1] 中的通用 LZ 压缩器,例如 lzma,然后将其熵编码替换为基于文本的内容。例如,在http://nishi.dreamhosters.com/u/lzmarec_v1_bin.rar 中有一个实用程序可以删除 LZMA 的熵编码,并且很容易将其输出转换为文本。

于 2011-03-07T20:11:54.650 回答