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

2 linux windows zip encoding character-encoding

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

谢谢 :)

Che*_*eso 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 
Run Code Online (Sandbox Code Playgroud)

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

有关该zipit.exe工具的详细信息,请参阅如何使用命令行压缩指定的文件夹.