是否可以使用 7zip 解压外国 zip 文件,而无需在计算机上添加区域?

是否可以使用 7zip 解压外国 zip 文件,而无需在计算机上添加区域?

在我的 3D 建模圈子里,许多用户会下载并解压日本或中国创作者的 zip 文件。通常,我们被教导在电脑中添加相关区域,以确保安全地提取文本/文件名。我们中的一些人使用 Bandizip 进行提取,因为它允许提取外国 zip 文件而无需添加区域,但 7zip 也能做到这一点吗?谢谢!

答案1

对于.zip文件,7-zip才不是具有代码页自动检测功能。它完全理解基于 Unicode 的 .zip 档案1,但如果文件名不是存储为 Unicode,则 7-zip 在提取时将始终使用当前系统的区域代码页(如果区域不匹配,将导致垃圾信息)。似乎没有办法告诉它使用其他代码页。

如果你不喜欢 Bandizip,那么 WinRAR 可以作为替代品——它有一个“选项→名称编码”菜单(至少在 6.00 版本中),可用于手动指定正确的代码页,例如日文文件名为“932 Shift-JIS”。

对于.7z.rar文件来说不应该有任何问题,因为这些格式几乎总是使用 Unicode 文件名,所以无论系统区域如何,它们的提取都应该有效。


1 .zip 档案对 Unicode 的支持相对较新2;许多较旧的程序不知道新增功能,它们会使用存储在系统代码页中的文件名创建 .zip 文件。更糟糕的是,.zip 档案没有指示哪个区域的代码页正在被使用;解档程序只需要知道(或猜测)。

我怀疑许多有问题的档案都是通过 Windows 的“压缩文件夹”功能创建的。非常长期以来它根本不支持 Unicode;它总是使用当前“区域”代码页(例如 Windows-1257 或 Shift-JIS)创建和提取档案。

随着时间的推移,这种情况确实有所改善;根据我的测试,Windows 10 版本 1703 能够提取(但尚未创建)基于 Unicode 的 Zip 档案,而 Windows 10 版本 21H1最后使用 Unicode(UTF-8)文件名创建 .zip 文件。

(仍然是错误的,并且没有设置表明名称确实存储为 UTF-8 的标志,但这是一个小问题,大多数解档程序都会自动纠正。)


2 7-zip 和 WinRAR 识别三个全部在 .zip 档案中存储 Unicode 名称的方法(直接 UTF-8;传统的 Info-ZIP 额外字段;以及缺少“UTF-8”指示标志的直接 UTF-8)。

答案2

  1. 与所选答案相反,7-Zip能够提取.zip使用不同代码页编码的压缩文件名的文件,尽管没有多少用户知道这一点,因为它未记录的至少在帮助文件中。
  2. 问题是,它只能使用命令行开关来实现,并且 GUI 不提供任何菜单项或键盘快捷键。

打开命令提示符窗口或按下Win + R并使用-mcp开关来执行此操作。

例如

"C:\Program Files\7-Zip-Zstandard\7zG.exe" x -mcp=932 -o"C:\your folder" -- "C:\dn\from a Japanese creator.zip" *

"C:\Program Files\7-Zip\7zG.exe" x -mcp=1251 -o"C:\your folder" -- "C:\dn\from a Russian.zip" *
  1. 命令行版本,7z.exe也可以按相同的方式使用。

  2. Shameless advertisement follows:如果你经常使用 7-Zip,请考虑切换到7-Zip Z标准. 它完全向后兼容 7-Zip,并提供其他编解码器,包括Zstandard 编解码器,我认为这是最佳的日常使用因为它提供极快的减压速度压缩率略高除了其他优点之外,它还比 zip 好。不,我与它的作者或 Facebook 没有任何关系。虽然我讨厌使用分叉,但在主分支纳入此编解码器之前,我别无选择。

相关内容