于 2012年02月07日 21:39, Ma Xiaojun 写道:
> walkaround 的方法也很多,比如用 perl/python 脚本后处理,修改 zip 代码
> 用 iconv 或其他库做编码转换。有个 unzip 工具有个 -O 选项可以让用户指定编码,
> 只是 Fedora 带的 PKZIP 没有这个特性。
如果用戶能玩轉這些,估計也不會用File Roller了。對於File Roller的目標用戶,他們需要直觀的GUI解決方案。
> 我对你提供的测试文件,在 F16 下命令行下做了测试:
>
> $ ls
> winzip_11_2.zip
> $ unzip winzip_11_2.zip
> Archive: winzip_11_2.zip
> ????.txt: mismatching "local" filename (??????.txt),
> continuing with "central" filename version
> extracting: ????.txt
> $ echo $?
> 1
> $ ls
> winzip_11_2.zip 中文測試.txt
>
> 可以看到中间是有警告信息的,unzip 返回值是 1 也代表非正常退出。
看來是Fedora的unzip有bug?我再研究一下。至少這種已經是Unicode/UTF-8的zip文件,不應該再有問題了。
你如何确定它是 Unicode/UTF-8 的?Windows 下几乎没有对应 Linux 下 UTF-8
的本地区位环境(locale)。winzip 里存储文件名等信息直接用的是系统本地语言设置
的编码。
当然,因为如此,不只是中国人,法国人、俄罗斯人当在文件名中使用非ASCII码
字符时
也会遇到问题。问题的根源是过去的 zip 实现没有很好的按照标准。
我觉得最好的解决方案还是写好wiki/指南,指出可用的 walkaround。
就像(也许不那么像)在 Fedora 下想听 mp3 歌曲,你不能说系统 bug
导致播不了,解决方案是写wiki告诉大家这里的专利问题、以及 rpmfusion
提供的解决方案。
--
alick
Fedora 16 (Verne) user
https://fedoraproject.org/wiki/User:Alick