在zip存档中编码文件名以更正在Windows资源管理器中显示

时间:2015-06-17 09:56:02

标签: javascript character-encoding zip windows-explorer

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

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

1 个答案:

答案 0 :(得分:2)

Windows资源管理器(包括Windows 7)可以处理不良的zip存档。 zip格式规范不强制编码,Windows资源管理器使用locale of the machine。它不处理unicode元数据(语言编码标志或Info-ZIP Unicode路径额外字段):您必须使用将打开文件的机器的区域设置 (这导致很多兼容性问题)。

JSZip还不支持自定义编码,但有一个open pull request to add this feature

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

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