编辑“︁
ZIP格式
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== 技术 == ZIP是一种相当简单的分别压缩每个文件的存档格式,分别压缩文件允许不必读取另外的数据而检索独立的文件。理论上,这种格式甚至允许对不同的文件使用不同的算法。不管用何种方法,存档中包含很多小文件的时候,占用空间会明显的比压缩成一个独立的文件(在类Unix系统中一个经典的例子是:普通的[[TAR|tar.gz]]存档是由一个使用[[gzip]]压缩的[[TAR]]存档组成)要大。 ZIP的规约指出文件可以不经压缩或者使用不同的压缩算法来存储。然而实际上ZIP几乎总是在使用[[菲尔·卡茨|卡茨]](Katz)的[[DEFLATE]]算法。 ZIP支持基于对称加密系统的一个简单的密码,现在已知有严重的缺陷,存在[[已知明文攻击]]、[[字典攻击]]和[[蛮力攻击|暴力攻击]]。ZIP也支持分卷压缩。 近来,ZIP加入了新的压缩和加密算法,不过这些新算法并没有被许多工具所支持并且没有得到广泛应用。 === 压缩方法 === ZIP格式的規格記錄了以下幾種壓縮方法:<ref name="zip6310">{{citation |url=https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.10.TXT |title=APPNOTE.TXT - .ZIP File Format Specification Version: 6.3.10 |date=2022-11-01 |access-date=2022-11-20 }}</ref> ;Shrinking(方法1):收缩(Shrinking)是[[LZW]]的微小调整的一个异体,同样也受到LZW[[专利]]问题的影响。因为不明确这项专利是否涵盖反收缩,一些[[开放源码]]的项目(例如Info-ZIP)决定谨慎行事,在默认的构造里不包含反收缩的支持。 ;Reducing(方法2-5):缩小(Reducing)压缩重复字节序列的组合,然后应用一个基于概率的编码得到结果。 ;Imploding(方法6):爆聚(Imploding)使用一个滑动窗口压缩重复字节序列,然后使用多重Shannon-Fano树压缩得到结果。 ;Tokenizing(方法7):令牌化(Tokenizing)的方法数是保留的。PKWARE规约没有为其定义一个算法。 ;Deflate和增强的Deflate(方法8和9):这些方法使用[[Deflate|Deflate算法]]。Deflate允许最大32K的窗口,而增强的Deflate允许最大64K的窗口。增强版完成任务稍稍成功一些,但是并没有得到广泛的支持。 :Deflate比较尺寸是52.1MiB(使用pkzip for Windows,版本8.00.0038测试) :增强的Deflate比较尺寸是52.8MiB(使用pkzip for Windows,版本8.00.0038测试) ;PKWARE Data Compression Library Imploding(方法10):PKWARE数据压缩库爆聚(PKWARE Data Compression Library Imploding),官方ZIP格式规约就此没有给出更多的信息。 :比较尺寸是61.6MiB(使用pkzip for Windows,版本8.00.0038测试,选择二进制模式) ;方法11:此方法被PKWARE保留。 ;Bzip2(方法12):此方法使用[[Bzip2|bzip2算法]]。此算法比deflate高效但是并没有被(基于Windows平台的)工具所支持。 :比较尺寸是50.6MiB(使用pkzip for Windows,版本8.00.0038测试) === 檔名編碼方式 === 歷史上,ZIP僅支援一種用於檔案名稱(而非內容)的編碼方式,即[[代碼頁437|IBM Code Page 437]]。<ref name="spec">{{Cite web |title=.ZIP File Format Specification |url=https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT |date=2022-11-01 |language=en |access-date=2025-01-03 |archive-date=2014-12-24 |archive-url=https://web.archive.org/web/20141224161935/https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT |dead-url=no }}</ref>在最新版的標準中則規定通用旗標第十一位元為語言編碼旗標(Language encoding flag,EFS)。若該旗標未設-{}-置,則仍舊使用Code page 437;若已設-{}-置,則使用[[UTF-8]]作為檔案名稱的編、解碼方式。<ref name="spec"/> 但在實務上,許多實現使用了UTF-8卻未設-{}-置該旗標,或者使用了這兩種以外的編碼方式,導致非英文-{zh-hans:文件名;zh-hant:檔名}-解碼困難,容易出現亂碼。<ref>{{Cite web |title=對抗 ZIP 亂碼檔名大作戰 |url=https://blog.abysm.org/2016/04/pkzip-filename-mojibake/ |website=Kuan-Yi Li's Blog |date=2016-04-03 |language=zh-hant |last=Li |first=Kuan-Yi |access-date=2025-01-03 |archive-date=2025-01-14 |archive-url=https://web.archive.org/web/20250114105552/https://blog.abysm.org/2016/04/pkzip-filename-mojibake/ |dead-url=no }}</ref>
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息