解决 unzip 命令解压 Windows 下生成的 zip 包时文件名乱码的问题

收到一个压缩包,用 unzip 解压,发现原来的中文文件名全是乱码。

查找解决办法,发现网络上有不止一个人提到可以给 unzip 命令指定 -O CP936 选项来纠正这一问题,但实测无果,也许是我 Debian 下没有支持 936 代码页需要的文件或者库?看起来并不像,因为连有人说的 unzip --help 输出信息中对此参数有一点说明的痕迹也没发现。还有人说可以设定环境变量云云,一看也是此方法的变种,不足采用。

有人提示可以使用 unar 命令,于是熟练地 apt 安装之,是好使的。看安装时的依赖组件,这个工具倒像是 Objective-C 写的。

后来想到如果只是文件名的编码问题的话,应该可以在处理每个文件的时候想办法纠正过来,开始还想是不是有 shell 脚本可以,后来找到一份 python 代码(参见 https://blog.csdn.net/gatieme/article/details/44807105,其中还有可以更改源码自己编译的部分,也可以参看 https://www.cnblogs.com/JesseTsou/p/10488435.html,未予实践),也就认了,略作修订如下,实测管用。

一条评论


  1. 补充说明一下。在 Debian 10.x 系统下,unzip 确实没有 -O 这个选项,但是,在 Ubuntu 18.04 LTS 下的时候,unzip 的帮助信息里是有这个选项的说明的,显然,Ubuntu 发版时合并了对代码页的支持补丁。

    回复

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注