修复 zip 存档中损坏的 Unicode 文件名

Nat*_*iel 5 zip unicode macos

一位同事给了我一个需要分析的一些数据的 zip 存档,但不幸的是,文件名在创建存档或在我的计算机上提取存档时的某个地方已被损坏。

\n\n

该存档包含 3000 个文件,其文件名包含日语字符。他在 Windows 机器上压缩了它,而我使用的是 Mac。如果我双击存档,我会得到如下所示的文件名:

\n\n
0001_rt_n\xcc\x83\xc2\xbae\xcc\x81a\xcc\x8a-i\xcc\x88A\xcc\x8ai\xcc\x81\xc2\xa0n\xcc\x83\xc2\xbae\xcc\x81a\xcc\x8a-a\xcc\x80I\xcc\x81i\xcc\x82\xc2\xa0_E\xcc\x81AA\xcc\x8a[E\xcc\x81a\xcc\x83E\xcc\x81eE\xcc\x81BA\xcc\x8a[.dat\n
Run Code Online (Sandbox Code Playgroud)\n\n

另一方面,如果我在命令行中使用“unzip”,则会出现相同的文件

\n\n
0001_rt_%FB+%C4%EE-%F2%FC%C6-%FB+%C4%EE-%EA%DB%F6-_%E2A%FC[%E2%EF%E2e%E2B%FC[.dat\n
Run Code Online (Sandbox Code Playgroud)\n\n

文件的内容很好(它们不包含任何日语字符,仅包含数字),但我需要获取原始文件名。

\n\n

有什么方法可以恢复正确的文件名,而无需访问位于另一个城市的另一台计算机上的原始文件?如果可能的话,我准备编写一个快速的 Python 脚本,但我对字符编码不太了解,所以我不知道如何去做。

\n

slh*_*hck 5

OS X 的Unarchiver是一个免费的应用程序,可以处理这个问题,当它无法正确检测到文件名编码时,它会提示您输入文件名编码。

这将覆盖 OS X 中用于解压缩文件的默认程序,但我发现它比内置程序强大得多。