index | ~dongdigua

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 Flag0x0008 ,而 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 的话得用第三方库。

dongdigua CC BY-NC-SA 禁止转载到私域(公众号,非自己托管的博客等)

Email me to add comment

Proudly made with Emacs Org mode

Date: 2025-10-09 Thu 00:00 Size: 2.3K (≈ 0.3385 mg CO2e)