标签: zlib

如何将zlib,gzip和zip相关联?它们有什么共同之处,它们有何不同?

zlib中使用的压缩算法与gzipzip中的压缩算法基本相同.什么是gzipzip?它们有何不同,它们是如何相同的?

compression zip gzip zlib

921
推荐指数
3
解决办法
29万
查看次数

zlib上的Ubuntu rails安装失败

我刚刚转到Ubuntu 8.10作为我的开发盒; 这是我第一次认真进军Linux作为日常使用的操作系统,而且我很难让Rails继续运行.我已经遵循了一些似乎工作正常的教程,但是当我尝试使用gem install或gem update时,我得到一个如下错误:

/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- zlib (LoadError)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:1
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/commands/update_command.rb:5
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:167:in `load_and_instantiate'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:88:in `[]'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:144:in `find_command'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:131:in `process_args'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:102:in `run'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:58:in `run'
from /usr/local/bin/gem:21
Run Code Online (Sandbox Code Playgroud)

我(在教程中推荐)安装了zlib,zlib1g和zlib1g-dev.我甚至找到了一些关于这个特殊问题的教程(但是除了我的以外的所有口味),但它们没有帮助.

我在Ubuntu 8.10,ruby版本1.8.8dev gem version 1.3.2

我尝试过各自单独重新安装红宝石和宝石,但无济于事.

ruby rubygems ruby-on-rails zlib ubuntu-8.10

129
推荐指数
7
解决办法
7万
查看次数

如何用zlib解压缩gzip流?

Gzip格式文件(gzip例如,使用程序创建)使用"deflate"压缩算法,该算法与zlib使用的压缩算法相同.但是,当使用zlib来膨胀gzip压缩文件时,库会返回一个Z_DATA_ERROR.

如何使用zlib解压缩gzip文件?

gzip zlib inflate

103
推荐指数
3
解决办法
8万
查看次数

与GZIP相比,缩小了压缩浏览器的兼容性和优势


更新2012年2月10日:

zOompf已经完成了这个题目了一些非常深入的研究在这里.它胜过下面的任何发现.


更新2010年9月11日:

一个测试平台已经为此创建这里




一些背景信息的GZIP和DEFLATE(zlib)的HTTP 1.1定义:

"'Gzip'是gzip格式,'deflate'是zlib格式.它们应该调用第二个'zlib'来避免与原始deflate压缩数据格式混淆.虽然HTTP 1.1 RFC 2616正确指向RFC 1950中针对'deflate'传输编码的zlib规范,有报告称服务器和浏览器根据RFC 1951中的deflate规范错误地生成或期望原始deflate数据,最明显的是Microsoft产品.所以尽管'deflate'使用zlib格式的传输编码将是更有效的方法(实际上正是 zlib格式的设计),使用'gzip'传输编码可能更可靠,因为HTTP上的名称选择不幸1.1作者." (来源:http://www.gzip.org/zlib/zlib_faq.html)

所以,我的问题是:如果我使用NO zlib包装器发送RAW deflate数据(或gzip,就此而言)是否有任何现代浏览器(例如,IE6和更高版本,FF,Chrome,Safari等)无法理解原始的deflate压缩数据(假设HTTP请求标头"Accept-Encoding"包含"deflate")?

放气数据总是比GZIP小几个字节.

如果所有这些浏览器都能成功解码数据,那么发送RAW deflate而不是zlib会有什么缺点?



更新2010年9月11日:

一个测试平台已经为此创建这里

compression optimization gzip zlib deflate

89
推荐指数
2
解决办法
4万
查看次数

sqlite3.ProgrammingError:除非使用可解释8位字节串的text_factory,否则不得使用8位字节串

在Python中使用SQLite3,我试图存储一段UTF-8 HTML代码的压缩版本.

代码如下所示:

...
c = connection.cursor()
c.execute('create table blah (cid integer primary key,html blob)')
...
c.execute('insert or ignore into blah values (?, ?)',(cid, zlib.compress(html)))
Run Code Online (Sandbox Code Playgroud)

在这一点上得到错误:

sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
Run Code Online (Sandbox Code Playgroud)

如果我使用'text'而不是'blob'并且不压缩HTML片段,那么它可以很好地工作(尽管db很大).当我使用'blob'并通过Python zlib库压缩时,我收到上面的错误消息.我环顾四周,但找不到这个简单的答案.

python sqlite unicode zlib

87
推荐指数
3
解决办法
6万
查看次数

我如何ungzip(解压缩)NodeJS请求的模块gzip响应体?

如何在请求的模块响应中解压缩gzipped主体?

我在网上尝试了几个例子,但似乎都没有.

request(url, function(err, response, body) {
    if(err) {
        handleError(err)
    } else {
        if(response.headers['content-encoding'] == 'gzip') {    
            // How can I unzip the gzipped string body variable?
            // For instance, this url:
            // http://highsnobiety.com/2012/08/25/norse-projects-fall-2012-lookbook/
            // Throws error:
            // { [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' }
            // Yet, browser displays page fine and debugger shows its gzipped
            // And unzipped by browser fine...
            if(response.headers['content-encoding'] && response.headers['content-encoding'].toLowerCase().indexOf('gzip') > -1) {   
                var body = response.body;                    
                zlib.gunzip(response.body, function(error, data) {
                    if(!error) …
Run Code Online (Sandbox Code Playgroud)

javascript zlib node.js express

63
推荐指数
6
解决办法
6万
查看次数

zlib标题是什么样的?

在我的项目中,我需要知道zlib标题是什么样的.我听说它很简单,但我找不到任何zlib标头的描述.

例如,它是否包含幻数?

structure header zlib

60
推荐指数
6
解决办法
7万
查看次数

编译错误 - 缺少zlib.h

我正在尝试使用IBM XL编译器在Blue Gene Q上编译软件,我收到以下错误消息:

"iostreams/zlib.cpp", line 19.10: 1540-0836 (S) The #include file "zlib.h" is not found.
make[3]: *** [zlib.o] Error 1
Run Code Online (Sandbox Code Playgroud)

我已经安装的zlib的新版本和更新的LD_LIBRARY_PATH$HOME/zlib/include

我错过了什么吗?

compiler-errors compilation zlib

60
推荐指数
2
解决办法
9万
查看次数

在压缩和加密时,我应先压缩,还是先加密?

如果我对AES加密文件,然后对其进行ZLIB压缩,那么压缩效率是否会低于我先压缩然后加密的效率?

换句话说,我应该先压缩还是首先加密,还是重要?

compression encryption performance zlib aes

56
推荐指数
4
解决办法
3万
查看次数

压缩格式对档案内的随机访问有很好的支持?

这与之前的问题类似,但那里的答案不能满足我的需求,我的问题略有不同:

我目前对一些包含排序数据的非常大的文件使用gzip压缩.当文件未被压缩时,二进制搜索是支持在排序数据中寻找位置的便捷有效方式.

但是当文件被压缩时,事情变得棘手.我最近发现了zlibZ_FULL_FLUSH选项,可以在压缩过程中使用它在压缩输出中插入"同步点"(inflateSync()然后可以从文件中的各个点开始读取).这是可以的,虽然我已经拥有的文件必须重新压缩才能添加此功能(奇怪的gzip是没有这个选项,但如果必须,我愿意编写自己的压缩程序).

一个来源看来,即使Z_FULL_FLUSH不是一个完美的解决方案......不仅所有gzip档案都不支持它,而且在档案中检测同步点的想法可能会产生误报(或者与同步的幻数重合)点,或由于Z_SYNC_FLUSH也产生同步点但它们不能用于随机访问的事实.

有更好的解决方案吗?如果可能的话,我想避免使用辅助文件进行索引,并且对准随机访问的显式默认支持将是有帮助的(即使它是大粒度的 - 就像能够以每10 MB的间隔开始读取一样).是否有另一种压缩格式比gzip更好地支持随机读取?

编辑:正如我所提到的,我希望在压缩数据中进行二进制搜索.我不需要寻找特定的(未压缩的)位置 - 只是在压缩文件中寻找一些粗粒度.我只是希望能够支持诸如"将数据从大约50%(25%,12.5%等)开始压缩到此压缩文件中".

compression gzip zlib archive random-access

54
推荐指数
6
解决办法
2万
查看次数