MacOS 压出来的 Zip 文件在 Windows 中乱码问题(省流:gpf)
$Id: mac_zip_gpf.org,v 25.7 2025/10/09 18:52:18 dongdigua Exp $
扔个文档:https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
我同学 Mac 用户,发现 Mac 压出来的 zip 文件丢 Windows 里会坏掉。
要了个样本,一眼编码问题。
作为搞过 misc 的人,估计是 zip 格式有问题。
遂 zipdetails -v 1.zip | grep -i general
(KDE Okteta 也行,用 Stefan Bruens 的插件),
发现 Mac 压出来的 General Purpose Flag
为 0x0008
,而 FileRoller 和 Windows 压出来的都是 0x0808
。
查了一下,第 11 位是
Language Encoding Flag (EFS). If set, the filename and comment fields for this file MUST be encoded using UTF-8.
原 来 如 此。
BTW,第 1 位是 If set, indicates that the file is encrypted.
,也就是 misc 里常说的伪加密。
本来想写一个 python 脚本转换一下的,但发现内置的 zipfile 库不能原位设置 flag_bits,应该是得创建一个新文件。 要想原位设置 flag_bits 的话得用第三方库。