解压包含法语文件名的存档文件

4
我正在为客户交付项目时遇到了困难。任务是将文件打包成一个压缩包,很简单吧?但是,文件名中有(必须有)法语字符。我在Linux命令行上进行打包,她在Windows桌面上打开。
起初,我尝试使用“zip”,但它没有成功。从StackOverflow上的阅读结果来看,字符支持似乎因实现而异。在解压缩时,生成的文件对我(Ubuntu Archive Manager)或她(WinZip、Windows)来说看起来不正确。
接下来我们尝试了tar。最后,对于我来说一切都正常了,但对于客户来说还是不可以(尝试PeaZip和7zip用于Windows)。
进入这个项目时,我真的没有想到会出现这样的问题。说法语的电脑用户肯定也会打包东西,他们在用什么?
非常感谢您提供任何见解或帮助。谢谢!

这个问题更适合发布在超级用户还是这里?我不太确定... - Maxim Zaslavsky
4个回答

6

ZIP传统上使用IBM437编码来编码文件名。然而据我所知,许多工具(不正确地)倾向于使用系统的默认编码,在这种情况下很可能会导致问题,因为两端可能使用不同的编码。

理论上,ZIP现在也支持UTF-8,这应该可以解决这些问题,但是工具支持仍将是问题。例如,据我所知,Windows Explorer的ZIP支持无法处理UTF-8编码的文件名。

因此我们得出这样的结论:双方都必须同意用于文件名的编码,并且您需要一个支持您拥有的所有字符的编码(任何Unicode编码都可以,但我不确定IBM437是否可以)。 ZIP已经走了很长的路,因此有许多工具可能会对编码产生分歧。如果可能,请明确指定要使用的编码并优先考虑Unicode。就与任意工具的兼容性而言,您可能更好地使用新的格式,该格式是针对Unicode设计的。

7-Zip自4.58 beta版以来支持它,根据更改日志,但仅在本地代码页不支持所需字符时才会使用它。使用-mcu命令行开关将使用UTF-8来处理除ASCII之外的任何内容。本地编码通常仅在非ASCII字符范围上有所不同,因此这很可能会奏效。也就是说,如果用于解压缩的工具也支持UTF-8(这对于7-ZIP而言比ZIP更有可能,因为它不像ZIP那样古老,并且解压缩工具较少)。

WinRAR也值得一试。


对于 Windows Explorer 不支持 UTF8 的压缩功能,我赞同你的看法。我可以证实在 Windows 7 上确实如此。微软做得好! - LOAS
还要注意,使用命令行中的unzip可以正确处理文件名中带有重音符号的文件,而这些文件在KDE的Ark中无法提取。 - ChrisR

2

那个帖子提到了p7zip,我之前不知道它的存在。使用7z似乎是最好的选择。它完美地处理了那些字符。 - bibby
我经常处理来自非英语系统的档案(不是为了工作而是出于个人兴趣),所以我知道乱码文件名有多烦人。很高兴能帮忙。 - JAB

0

或者...你可以删除带重音的字符。如果法语用户是文件传输的接收方,他们可能会同情(请询问您的用户!)。

实际上,法语并没有太多需要担心的重音。您只需要关注[ae]-grave、e-aigue、[aeiou]-circumflex和c-cedilla,大小写都要考虑(尽管这更可能发生在grave和aigue上,除非有人按下了大写锁定键)

Tar有一个--transform选项。如果您创建一个sed模式,将每个iso-latin-1带重音的aeiou和c字符转换为无重音版本,那么您可能会没问题。


是的,客户已经拒绝了那个。不过还是谢谢。 - bibby
确保目标系统上安装了最新版本的Zip。通常,更新的存档应用程序已添加了处理I18n和其他更“深奥”问题的功能。完全有可能较新的版本中已经支持UTF-8。 - Jason

0

我认为你应该选择7z格式的压缩。 在Linux下,可以使用PeaZip进行操作,或者安装p7zip并通过UI(如Ark或Filereoller)使用它,具体取决于你的桌面环境(我更喜欢PeaZip,因为它可以在任何桌面环境中使用)。 7z格式是从头设计时考虑到UTF8的(作者是俄罗斯人),根据我的经验,它从未失败过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接