2011-03-07 81 views
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中。 “

+1

什么是编程语言? Google for Huffman压缩库。看看[libhuffman](http://huffman.sourceforge.net/) – sled 2011-03-07 13:19:04

+0

我正在寻找一个DLL,所以我猜它应该用C++或类似的语言编写。 – David 2011-03-07 13:30:13

+0

我已经Google搜索了一遍,没有找到这样的DLL,除了用于教育目的的图书馆。 – David 2011-03-07 19:06:11

回答

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

    具体而言,可以使用任何通用压缩机压缩您的 基本文件,则基本文件+目标文件,然后DIFF这些,你会得到一个 字典压缩(二进制),它可以是然后转换为“文本” 与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的熵编码,并且它很容易将其输出转换为文本。

+0

谢谢你的出色答案。为了清除,我需要能够将文本存储在CSV文件中,并且仍然可以将它们导入到数据库甚至Excel中。这意味着CSV文件中的某些列可能会被压缩,有些则不会。我希望这足够清晰。 – David 2011-03-07 23:00:37

+0

然后,您需要找到哪些符号不能在CSV中使用,并将其余的添加到http://nishi.dreamhosters.com/u/marc_v1.rar中的init字符串中,然后使用任何常规压缩库。 – Shelwien 2011-03-08 00:39:50

+0

是的,任何二进制[压缩算法](http://en.wikibooks.org/wiki/Data_Compression/Refereneces#open-source_example_code)(比如说zlib)和任何任意的[binary-to-text encoding](http: //en.wikipedia.org/wiki/binary-to-text_encoding)(比如,base64编码或basE91编码)听起来像它可能符合您的标准... – 2011-03-08 01:11:35

相关问题