对 zip 存档中的文件名进行编码以在 windows 资源管理器中正确显示

encoding filenames in zip archive to correct displaying in windows explorer

在我们的网站上,我们使用 jszip library 在客户端生成 zip 存档。此存档中的文件在文件名中包含非 ASCII(西里尔)字符。如果使用 7zip 文件名显示正确。但是我们网站的一些用户使用 windows 资源管理器打开了这个 zip 档案,在这种情况下文件名显示不正确。

有没有办法对文件名进行编码以便在 windows 资源管理器 zip 查看器中正确显示?

windows 浏览器 Windows 7 及以下版本处理 zip 档案的效果很差。 zip 格式规范不强制编码,windows 浏览器使用 locale of the machine。它不处理 unicode 元数据(语言编码标志或 Info-ZIP Unicode 路径额外字段):您必须使用将打开文件 的机器的语言环境 (这会导致很多兼容性问题)。

JSZip 不支持自定义编码(目前)但是有 open pull request to add this feature.

另一个 "solution" 将只使用 ASCII 名称(这是 this page 的结论)。

您也可以保留 utf8 文件名,但强制您的用户至少升级到 Windows 8、apply a patch 或安装 7zip(这可能不是最实用的解决方案)。