2011-03-07 76 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

相關問題