如何使用特定编码创建ZIP文件

时间:2009-10-02 17:11:17

标签: windows linux encoding zip character-encoding

在我的Linux服务器上,我有一些带有重音名称的文件(test-éàïù.zip)。 当我使用7zip命令行工具将它们添加到新的ZIP文件时,不会保存字符集/编码信息,并且在Windows计算机上打开时,存档无法正确显示文件名。 我知道7zip创建Zip V1.0档案,而不是2.0。也许charset仅限于MSDos charset? 如何使用7zip或其他zip工具指定编码,以获得便携式存档?

谢谢:)

2 个答案:

答案 0 :(得分:9)

这个超级用户问题,但是......

ZIP使用IBM437的默认代码页。有可能使用UTF-8,但并非所有的zip工具和库都支持它。有些zip工具会执行任意代码页,即使zip规范只允许IBM437或UTF-8。我认为WinRar就是这样一个工具。

DotNetZip进行编码。它将执行UTF-8或任意代码页。如果您正在编写应用程序,则有一个.NET库。如果从脚本运行,则有命令行工具。无论哪种方式,DotNetZip都需要.NET。您将需要Mono在Linux上运行它。

命令行示例:

zipit.exe Olivier.zip -cp 860 test-éàïù.txt 

(使用860代码页)我不确定Windows资源管理器是否正确处理zip文件,其中包含拉链内文件名的替代编码。

有关该zipit.exe工具的详细信息,请参阅How to zip specified folders with Command Line

答案 1 :(得分:0)

使用指定的代码页创建ZIP文件:

7z a -mcp=<code_page> -tzip <archive_name> <file_names>...

使用指定的代码页从ZIP文件中提取文件:

7z x -mcp=<code_page> <archive_name>