1
3
DotNetZip 支持压缩文件中文件名的Unicode和任意编码,无论是读取还是写入压缩文件。 这是一个.NET库。对于UNIX的使用,您将需要Mono作为前提条件。 如果zipfile是由winzip正确构造的,换句话说,如果它符合 the zip spec from PKWare 在解包时,您不需要做任何特殊的工作来指定编码。根据zip规范,zipfiles中的文件名有两种支持的编码:utf-8和ibm437。这些编码中的一种或另一种的使用是在zip元数据和任何zip库中指定的。 可以 检测并使用它。DotNetZip在读取兼容的Zip时自动检测到它。这样地:
有一些存档程序可以生成“不符合”W.R.T.编码的压缩包。Winrar就是其中之一-它将创建一个zip,其中文件名在计算机上使用默认编码进行编码。在上海,它将使用CP950,而在冰岛,则是其他地方,而在里斯本,则是其他地方。这里“不符合”的优点是,Windows资源管理器将打开并以这种压缩方式正确显示i18n大小的文件名。换句话说,“不合规”通常是人们想要的,因为Windows(还没有?)。支持UTF-8 zip文件。 (这一切都与zip file中使用的编码有关,而不是与zip文件中包含的文件中使用的编码有关) zip规范不允许在zip元数据中指定任意文本编码。换句话说,如果在创建zip时使用CP950,那么提取逻辑需要“知道”才能在提取时使用CP950—zip文件中没有包含该信息的内容。此外,当然,用于以编程方式提取的zip库必须支持任意编码。据我所知,Java的zip库没有。DotNetZip可以。像这样:
dotnetzip还可以创建带有任意编码的zip文件-“不符合”zip。 dotnetzip是免费的,并且是开源的。 |
2
2
我找到的解决方案是: 如果提供了正确的回退字符集,ApacheCommonsCompress可以很好地解压这样的档案。 |
Sandeep · 从根目录开始打印完整的符号链接信息 2 年前 |
jojo · 用正则表达式搜索,但仅用sed替换字符串的一部分 2 年前 |
David Gall · 查找在特定日期从特定计算机登录的所有用户 2 年前 |
JLLMNCHR · 如何在Oracle中将大型表导出/假脱机到文件 6 年前 |