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

去那个 aur 的页面,下载 unzip60.tar.gz 和 unzip-iconv.tar.gz,解压两个压缩包于同一个目录,进入 unzip60/,patch -p 1 -i …/unzip-iconv/unzip60-alt-iconv-utf8.patch,然后 make -f unix/Makefile generic,最后 sudo make install 安装。
如我前面所说的修改 /etc/environment,注销重新登陆,如果还是不行,再改~/.xinitrc,反正我是一股脑全改了
编译结果如图所示


打了补丁编译后 export 一下环境变量后 Ark 用起来没问题的,另外 home:ykoba 里有个 unzip-ja,不知道能不能解决中文的问题,我没试过

我也是那么编译的,再麻烦楼上的朋友测试一下:
在 ZIPINFO=-O CP936 设置的情况下,用 zipinfo -l 4455.zip 结果如何?

如果结果不正确,那么你的 Ark 可能调用了其他后端?

如果结果正确,那需要进一步研究,比如 isprint(3) 对 0 到 255 的结果如何(这是 unzip 在列文件列表用来判断是否用? 替代字符的函数)。

现在编译出来的 unzip 确实有问题,我一直都是用以前编译的,装了 12.3 后直接 make install,没有重新编译,也不知道以前是怎么编译的,现在我只能把以前编译的打包传上来,以前好象是在 12.2 下编译的,你可以看一下。
为什么现在编译的不行,我想了好久,还是百思不得其解。
unzip60.tar.xz (1000 KB)

我曾经用 python 自己写了一个解压缩的软件,调用 python 里面的 zip 库实现。解决乱码的办法是,取出文件名后,我先将文件名串设置编码为 GBK,然后转成 UTF 的串,再用这个串作为文件名来创建解压文件。
我以为 libzip 也可以这么做,还准备用 c++ 来写一个 unzip 的程序的。

还真有 libzip 这么一个东西:http://www.nih.at/libzip/
看来我们要是重新写一个 unzip 程序可以基于之。

这个东西是基于 zlib 的,如果真的要写一个 unzip 的话,可以直接用 zlib,不过那到最底层了,libzip 好像是封装好了

解压以后使用"convmv -f gbk -t utf8 -r --notest *"。

这个东西是基于 zlib 的,如果真的要写一个 unzip 的话,可以直接用 zlib,不过那到最底层了,libzip 好像是封装好了

zypper se zip 发现貌似好多 zip 的库,什么 libzip,libzip2,libzzip-0-13,libzipios0,quazip,而且 quazip 还是 qt 的,可惜就是没有能很好的支持中文的 gui 压缩软件

gbkunzip 用户路过~

PS: 解压我命令行下使用 x

后来查了一下,确实是 isprint 的问题,好像要禁用 isprint 才能正常显示中文文件名。现在我打包了个含 libnatspec 补丁的 unzip,应该能解决 ark 和 xarchiver 的中文显示问题,欢迎试用,这是 obs 页面: build.opensuse.org/package/show?package=unzip&project=home%3Ayjcoshc

openSUSE 的解决方案更快更好更强。

之前用不了是因为一个小 bug。

解决方案:

sudo zypper in rcc-runtime

搞定。

马叔的四书五经测试无误。

恭喜苏苏终于弄好了 :slight_smile:

rcc-runtime 为啥能解决问题表示不解……

俺想到了一个新思路,通过 Python 的 zipfile 模块将非 UTF-8 的 zip 文件转换成支持 UTF-8 的 zip 文件,转换得到的文件跨平台可用,也可以在 Google Drive 中直接预览(目前就测试了之前那个 4455.zip)。

代码(Python 2): github.com/maxiaojun/zip-fix/blob/master/cli.py

用例(目前完全没有错误处理,请小心使用):
python cli.py 4455.zip 4455_fix.zip gbk

局限性:Python 的 zipfile 模块只支持 Stored(无压缩)和 Deflate 两种压缩方法(compression method),其他压缩方法无解,参见: en.wikipedia.org/wiki/Zip_(file_format)#Compression_methods

跨平台注意事项:
虽然三大 OS 都原生支持 zip,但是对 zip 的 UTF-8 的支持好像又都是坏的……需要第三方软件才能正确支持 UTF-8……

  • Linux:请安装 p7zip
  • Mac:请安装 The Unarchiver
  • Windows:请安装 7-zip 或者 PeaZip(WinRAR 和 WinZip 也能正确支持 UTF-8)

我们用 librcc 的 zip 补丁。rcc-runtime 是 librcc 的转换规则。

Sent from my Galaxy Note 2 using Tapatalk 4 Beta

一点也不新,请自行搜索 gbkunzip。而且 UTF-8 编码的 zip 归案文件名并不是跨平台的,你也说了需要特定的软件不是?

我就是看了你那个 gbkunzip 才写的……

你那个把官方的 zipfile 模块自己复制一份再 hack,其实直接调用 zipfile 模块(几行代码)就能解决问题……而且你那个顾名思义,把来源编码锁死在了 GB 系列,我这个能转换任何 Python 支持的编码( docs.python.org/2/library/codecs.html#standard-encodings )……最主要的是,你那个是为了解压,我这个是为了转换。

需要特定的软件?至少我没见过有人用 Windows 连个第三方压缩软件都不装,朝内绝大部分 WinRAR,朝外有时候就用 7-zip(Linux 和 Mac 样本数不够),UTF-8 编码进 zip 标准很多年了已经。现在还有人在用 IE6,就不让搞 HTML5 了吗?

Linux 和 Mac 用户,就算山穷水尽,还有
python -m zipfile
可以用啊!

再补充一下,openSUSE,Debian testing/sid,Ubuntu saucy 的 unzip 都打了补丁可以正确列出 UTF-8 Zip 压缩包的文件内容了(解压一直都行)。其他发行版的用户检查下自己的发行版哦~

openSUSE 加了个 unzip-dont_call_isprint.patch

Debian/Ubutnu 是在编译时加了 -DNO_WORKING_ISPRINT

1赞

因为我不想写个新的 zip 文件。如你所说,我只是为了解压而已。反正跨平台的压缩文件格式我推荐 7z。

关于 zip 的 UTF-8 支持,我刚看过了,是通过一个标志位来指定的。也就是说,你的脚本是把旧的非 UTF-8 编码的文件名转成了新的 UTF-8 编码的格式。要是再加上一些错误处理就更好了。

其实我觉得,opensuse 的 rcc 版 unzip 很不错嘛。

马叔多来我们论坛讨论技术嘛,氛围嗷嗷好,toy 评论栏没啥好留恋的… 自从当初弄那个什么 QQ 帐号 Single Sign-In 的渣评论栏之后,side effects 是脑残越来越多了,现在跟 CB 一样评论栏完全不能看了。

Sent from my Galaxy Note 2 using Tapatalk 4 Beta