如何创建具有特定编码的 ZIP 文件

发布于 2024-08-06 00:59:52 字数 218 浏览 8 评论 0原文

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

On my Linux server I have some files with accented names (test-éàïù.zip).
When I add them to a new ZIP file using 7zip command-line tool, the charset/encoding information is not saved and when opened on a Windows computer, the archive does not correctly display filenames.
I know that 7zip creates Zip V1.0 archives, not 2.0. Maybe the charset is limited to MSDos charset ?
How could I specify an encoding using 7zip or another zip tool, in order to get portable archives?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凯凯我们等你回来 2024-08-13 00:59:52

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

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

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

命令行示例:(

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

使用 860 代码页)我不确定 Windows 资源管理器是否正确处理 zip 文件,并使用 zip 中文件名的备用编码。

请参阅如何使用命令行压缩指定文件夹 有关 zipit.exe 工具的更多信息。

This is a superuser question, BUT...

ZIP uses a default codepage of IBM437. There is the possibility to use UTF-8, but not all zip tools and libraries support that. Some zip tools will do arbitrary code pages, even though the zip spec allows only IBM437 or UTF-8. I think WinRar is one such tool.

DotNetZip does encoding. It will do UTF-8 or an arbitrary code page. if you're writing an app, there is a .NET library. If you are running from a script, there are command line tools. Either way, DotNetZip requires .NET. You will need Mono to run it on Linux.

example for the command line:

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

(to use the 860 codepage) I'm not sure that Windows Explorer correctly handles zipfiles with alternate encoding for the filenames within the zips.

See How to zip specified folders with Command Line for more info on that zipit.exe tool.

小草泠泠 2024-08-13 00:59:52

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

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

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

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

Create a ZIP file using specified code page:

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

Extract files from a ZIP file using specified code page:

7z x -mcp=<code_page> <archive_name>
|煩躁 2024-08-13 00:59:52

我知道 7zip 创建 Zip V1.0 档案,而不是 2.0。

我不知道如何使用 7zip 创建 zip v1.0 存档。

您可以使用 Info-Zip 的 zip 1.1 创建版本 1 ZIP 存档,该版本仍然可用(从 FTP 下载 http://infozip.sourceforge.net/Zip.html#Downloads)。您需要从源代码构建它(在 Linux 系统上制作 sysv);然后你就可以使用新建的 zip 来创建旧格式的档案:

]# ./zip filename.zip file1 file2 file3
]# file filename.zip 
]# filename.zip: Zip archive data, at least v1.0 to extract

I know that 7zip creates Zip V1.0 archives, not 2.0.

I couldn't work out how to use 7zip to create a zip v1.0 archive.

You can create version 1 ZIP archives using Info-Zip’s zip 1.1, which is still available (download from the FTP http://infozip.sourceforge.net/Zip.html#Downloads). You’ll need to build it from source (make sysv on a Linux system); then you’ll be able to use the newly-built zip to create old-format archives:

]# ./zip filename.zip file1 file2 file3
]# file filename.zip 
]# filename.zip: Zip archive data, at least v1.0 to extract
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文