压缩软件大家都用得多了,老司机们从网上下载个什么资源,很多情况下都会下载到压缩文件。压缩文件的好处有很多,一来减少体积节省流量,二来打包方便可以一次性容纳N个文件,要使用这些压缩文件,压缩软件往往是必不可少的。压缩软件使用简单,但其实很多朋友并没有意识到,这里面也存在一些大坑。今天,就来讲讲压缩软件的故事吧。
你都了解压缩软件吗?
压缩软件的原理
为什么压缩软件能够减少文件体积?无论是什么压缩软件,其目的就只有一个——减少冗余数据。这是什么意思呢?例如某行字是“000011111”,就可以压缩为“0(4)1(5)”,在保证数据没有受损的同时,减少其占用的体积。
一个简单的压缩案例
上面的例子比较简单,实际上压缩软件的算法是复杂且多种多样的。不同的压缩软件会使用不同的字典,用来查找压缩冗余的数据,算法结合字典在很大程度上决定了压缩的效率。我们经常会看到不同的压缩文件格式,例如ZIP、RAR、7Z等,实际上这只是不同的压缩规范,就算是同样的格式,例如大家都是ZIP,其中的压缩算法可能也是不一样的,ZIP就可以使用Shrinking、Reducing、Deflate等算法。某个压缩文件压缩率高不高,不但要看其文件格式,更要看其具体使用的算法(例如ZIP和7Z都可以使用Deflate算法)。
至于用哪个压缩软件最高效,实际上绝大多数的压缩软件,都没有自己的压缩算法,本质上只是马甲。主流的压缩文件格式大致有三种,分别是ZIP、RAR和7Z,它们分别来自Winzip、Winrar以及7-Zip,下面我们来说说这三种格式及其背后的压缩软件吧。
ZIP:事实上的标准格式
这是一个历史非常悠久的压缩格式,也是事实上的标准格式。你可以看到各大软件商发布软件时,提供的往往都是ZIP格式的压缩文件包,各大操作系统也对ZIP格式有着比较好的支持,例如Win系统中就可以直接访问ZIP文件中的内容。不过,这个最被广泛支持、被最多人认同的格式,其开发者的命运却有点悲情——ZIP格式的发明者Philip Katz英年早逝,37岁就因为酗酒去世了。
Winzip对推广ZIP格式有着巨大作用
在DOS操作系统仍在盛行的时代,最流行的压缩格式是ARC。ARC效率慢且封闭,使用对应的压缩软件还要付费,Philip Katz对其不满,于是Philip Katz开发出了PKARC这款完全兼容ARC的软件。不料因为此事,Philip Katz被ARC告上法庭并败诉,不得不放弃PKARC的开发。
Philip Katz并没有放弃压缩软件的钻研,他随后开发出了PKZIP这款软件,首创了ZIP格式。就算到了今天,你开启任何ZIP文件,仍可以在文件头中看到“PK”的字样,这就是Philip Katz名字的缩写。ZIP的表现全方面压制了ARC,速度更快压缩比更高,而且Philip Katz开放了ZIP格式,任何压缩软件都可以创建ZIP。很快,ZIP就成为了最流行的压缩标准。
ZIP是一种开放的格式,Philip Katz的PKWare公司并没有为ZIP格式注册专利。ZIP格式被多家软件商所利用,Winzip这款软件也是在那时候崛起的。Nico Mak利用开放的ZIP格式开发了Winzip,兼容Win系统。借着Win崛起的东风,Winzip成为了最流行的压缩软件之一。再例如大家都很熟悉的Winrar,也使用了ZIP的算法,同时没有开放RAR算法给其他软件,这令Winrar一度成为最全能的压缩软件,一跃成为主流。
Philip Katz的结局并不好,在2000年,他在一家汽车旅馆中去世,死时还握着酒瓶。
Philip Katz
ZIP的开放令其成为了最流行的格式,也是事实上的标准格式,家家户户都支持它。不过它也存在一些缺点。例如,它的压缩率相比RAR和7Z偏低,对Unicode字符支持并不好,缺乏修复功能,加密安全性一度堪忧等,RAR和7Z都令ZIP感到巨大的竞争压力。
RAR:起于江湖盛行于中国
在国外,其实RAR的流行程度和ZIP有差距;但在中国,RAR当之无愧是最流行的压缩格式。RAR格式源于Winrar这款软件,和ZIP不同,RAR格式并不开放,只免费发放了其解压组件。这意味着别的压缩软件只能解压RAR,不能创建RAR。和Winzip相比,RAR能压缩、解压ZIP和RAR,Winzip却不能压缩RAR,因此Winrar利用专利,取得了竞争优势。
在中国尤为流行的RAR
这其实尚不足以让RAR流行起来,毕竟和ZIP对比,RAR的专利算法虽然压缩率更高一些,但速度也较慢。令RAR真正崛起的契机是破解组织的力挺——破解游戏往往使用了Winrar来压缩,而中国又是盗版游戏最横行的市场,RAR由此在中国开始流行。游戏盗版行业可谓是不折不扣的灰色地带,RAR绝对称得上是起于江湖。
为什么破解游戏喜欢使用RAR呢?首先,RAR对Unicode字符支持好,很多游戏都不是英文版,用ZIP压缩可能会出现乱码,而RAR不会;其次,RAR很早就支持分卷压缩,不少破解游戏体积都很大,要把它们装进盗版光盘,就得用RAR分卷。而RAR的分卷文件,一度只能用Winrar开启。于是,盗版游戏玩家们纷纷成为了Winrar的拥簇,在中国Winrar成为了最万能的压缩软件,流行度完全盖过了Winzip。
RAR出色的分卷压缩是其流行的一大原因
RAR的成功,一方面是由于专利保护,令其处在了竞争的有利位置上;另一方面它的确也比较先进。RAR压缩率稍高,对分卷压缩支持好,早早支持AES加密安全性好,而且还自带修复功能——不少由于光盘划花导致的数据错误,就是靠RAR的CRC修复得而完璧归赵的。
不过,RAR的封闭始终是个问题,它最开始是收费软件,现在针对中国发行了带广告的免费版,但人们还是更倾向于使用破解版。随着7-ZIP的出现,万能压缩软件越来越多,虽然RAR格式仍在流行,但很多人已经不再使用Winrar这款软件。
7Z:完全开源的良心品
7Z是压缩软件7-Zip的御用格式,支持LZMA等先进算法,压缩效率进一步提高,甚至要比RAR更胜一筹,而且压缩时间比RAR更短,与此同时对AES加密、固实压缩、超大文件压缩的支持也非常好,表现是相当惊艳的。而造就7Z格式的7-Zip压缩软件也堪称良心——它对各种压缩文件支持很好,主流的压缩文件基本都给予支持,当然一些商业的压缩格式例如RAR,就只能解压不能压缩。
7-Zip在国内不流行的一大原因可能是界面太简陋,但就是这样的风格,社会你7哥,人狠话不多
最良心的一点是,7-Zip和7Z是完全开源的!因此,它的内核被很多其他压缩软件所使用,国产压缩软件通常就是7-Zip的忠实拥簇,压缩软件中的“坑”也由此而来。
7-Zip开源,但它使用了LGPL开源协议,某个软件如果使用了7-Zip的源码,按理来说也必须开源。但国内的“X压”等软件非但没有开源,还在压缩文件的文件头中故意加入无助于压缩的私货,让其他压缩软件无法解压。用了人家的代码还故意制造不兼容,对于这种行为,只想说一句,“我从未见过如此厚颜无耻之人”!
总结
总体来说,在压缩文件格式方面,笔者是比较推荐大家压缩成ZIP格式的,毕竟这个格式拥有着最广泛的支持。在压缩软件的选择上,大家可以优先考虑7-Zip,对分卷压缩有特殊要求的朋友,则可以使用Winrar。对于某些不厚道的国产压缩软件,大家还是少碰为好,这种坑不仅坑自己,也会坑到别人。