大家都用什么 gui 压缩软件?

说下我知道的一些 Linux 下的 GUI 压缩软件:

Ark: utils.kde.org/projects/ark/ KDE 的压缩软件。
Engrampa: github.com/mate-desktop/mate-file-archiver MATE 的 File Roller 分支。
File Roller: fileroller.sourceforge.net/ GNOME 的压缩软件。
J7Z: code.google.com/p/k7z/ 基于 7-zip 的压缩软件。
PeaZip: peazip.sourceforge.net/ 从截图看似乎不错的压缩软件。
Xarchiver : xarchiver.sourceforge.net/ 基于 GTK2 的压缩软件。

这些软件(至少在不额外配置的情况下),对于 ZIP 乱码似乎都无力,不知道是否有人有兴趣拿其中一个开刀进行解决?

zip 协议本身无法携带文件名称编码信息,所以理论上肯定有乱码。
比较实用的解决方法是,在解压出来之后,对文件名称进行编码检测,然后再次解压。这个方法并不难。
主张这种做法的人不在少数,可惜的是,貌似 linux 下的开发人员过于理想主义的,不愿迁就现实,所以迟迟没有解决。
不过,我自己能解决就行了,哈哈。

其实 2007 年开始,ZIP 标准规定了一个 bit 用来指定文件名编码是不是 UTF-8,只是 unzip,作为各种 GUI 压缩软件的后端,支持这个特性有严重 bug,unzip 短期内也没有发新版的希望。

其实来自 OS X 那边的 The Unarchiver 就是这么做的,Linux 下可以编译相应的命令行工具。

貌似你说过你自己有开发压缩软件?其实我在想能否选择一款 Linux 下已有的压缩软件我们来加上编码转换的支持,不收补丁 (各种上游不是死了就是不太活跃的样子) 就 fork。

这个是不是有软件啊,大大可不能藏私啊,分享一下吧。

之前的时候 unzip 的 -O 选项可以指定 GBK 或是什么的,但是在 suse 下貌似没发现

已有的也是调用各种半死不活的后端,把 unzip 修了前端就有了…

这个我好像听说是 Ubuntu 独有的啊。话说这个问题直接用 7z 不就好了么?表示平常压缩归档都在终端执行,tarball 比较适合各种类 UNIX 之间交流使用,要是给 Windows 的话就用 7z 压缩个 zip 归档就好了嘛。

-O 选项是 Arch 那边有人搞了一个补丁,然后 Ubuntu 直接集成了那个补丁 (从 6.0-4ubuntu1 的开始):
aur.archlinux.org/packages/unzip-iconv/
changelogs.ubuntu.com/changelogs/pool/main/u/unzip/unzip_6.0-8ubuntu1/changelog

但是那个补丁似乎只管解压,不管 ls,所以在各种前端单纯加入相应选项的支持也没用。

要说 7z 的话,其实 7z 支持 UTF-8 的 zip 确实 OK(不像 unzip 去 ls 一个 UTF-8 的 zip 都给你一堆?),但是面对 GBK 的 zip 无能为力啊。

我现在的做法是:给 unzip 的源码打上那个 arch 的补丁,自己编译安装,然后在 /etc/environment ~/.xinitrc ~/.bashrc 里
export UNZIP="-O CP936"
export ZIPINFO="-O CP936"

然后 ark 里 zip 就不会乱码了,压缩就用 7z

1.  一个自己用 java 写的解压缩软件 
2.  同时也用 wine+7zip

那直接 wine + rar 了。

我这边测试下来解压可以,但是显示依然是一堆问号,附件有我用来研究的测试文件,内容是四书五经以免有版权问题。
4455.zip (785 KB)

是不是用到了 Java 7 中新增加的操作 ZIP 文件的类?不过有一个悲剧的地方就是好像 Java 7 生成的 ZIP 文件用 unzip 解压会有些问题……

no. 除了 jdk7 可以指定编码外,apache compress, ant 都可以指定

其实我前面搞错了,Java 7 是新增了设置编码的功能……类是 Java 6 就有的……
Apache Commons Compress 看起来不错,不过 Ant 不是编译系统来的吗?

我这里正常啊


我这里自己编译还是不行,可以给一下详细的编译步骤吗?先谢了。

unzip 不是 non-free 软件吧。去 BURP 一下默认带上 -O 不就好了吗?不过这还是对 Ark 不起作用吧?

PS:那个补丁好像不是 Arch 的,是 Debian 的,不过后来不知道什么原因移除了,现在 Ubuntu 似乎也没 -O 了。昨天搜索在 Ubuntu 论坛上看到的。

BURP 是啥?

我都發了和 AUR 的 link 和 Ubuntu 的 Changelog 了你還不信……
Ubuntu 沒有 -O 那是很多版本之前的事情了。

lizards.opensuse.org/2011/05/16/have-you-burped-yet-today/

囧?我是搜索的时候看到那人的截图里有个 from Debian, originally from ZIP-INFO.