在archlinux下用zip解压文件一直是我很头疼的一个问题。

        每次收到别人传过来的或者是网上下载的从windows压缩的zip文件,我打开都是乱码,一直都没有很好的解决办法。

       原因大家都知道:在windows下压缩文件时,是以系统的默认编码(gbk,gb18030)来压缩,zip文件并没有声明编码的格式,因此,linux下解压缩时,会使用系统默认的格式(utf-8)解压缩,编码格式不同,所以会出现乱码。

       即使查资料也都是说的不靠谱,什么unzip -O之类的,可是好像-O选项的版本早就没了还是怎么的,反正是不能用,而且那些所谓的解决办法都是互相抄来抄去的解决方法,其实那些博主估计根本就没有亲身试验。今天终于找到了方法,上命令——

unzip xxx.zip

       先用这条命令将xxx.zip解压,假设解压出来的文件是xxx。

convmv -f gbk -t utf8 --notest xxx

       这条命令是让文件xxx从gbk编码转换成utf8编码,如果不加--notest的话只是预览而不是真正的转换。

       亲测可用。(用脚本解压并转码了30多个zip包,不过有4个是失败的,转码未成功。失败原因是这几个zip包解压出来的文件本身就已经时utf8编码,所以不能再转换成utf8编码了。)不过总体来说,成功率还是很靠谱的!


==========================================

2017-07-07更: 解压不乱码

lhb@Archer~ $ yaourt -Ss unzip-natspec
archlinuxcn/unzip-natspec6.0-6
   Unpacks .zip archives with non-latin filenames, using libnatspec patch from AltLinux.
aur/unzip-natspec6.0-6 (30) (0.79)
   Unpacks .zip archives with non-latin filenames, using libnatspec patch from AltLinux.

lhb@Archer~ $ yaourt -S unzip-natspec
正在解决依赖关系...
正在查找软件包冲突...
:: unzip-natspec 与 unzip 有冲突。删除 unzip 吗? [y/N]y

软件包 (3) libnatspec-0.3.0-2  unzip-6.0-12 [删除]  unzip-natspec-6.0-6

下载大小:   0.15 MiB
全部安装大小:  0.50 MiB
净更新大小:  0.18 MiB

unzip-natspec可以自动识别文件编码,用法和unzip一样,直接"unzip xxx.zip"即可,非常方便!


==========================================

2017-09-11更: 转码

摘自:http://blog.csdn.net/ccf19881030/article/details/17792109

今天我要推荐的是另一个Shell下编码转换工具enca。用它不仅可以转换编码,还可以查看文件的原始编码,而且还支持成批转换。使用上也比iconv方便一些。安装enca很简单,一般用源安装就行了,enca用法如下:

enca -L 当前语言  文件名

enca -L zh_CN file //检查文件的编码


enca -L 当前语言 -x 目标编码 文件名 

enca -L zh_CN -x UTF-8 file //将文件编码转换为”UTF-8″编码

enca -L zh_CN -x UTF-8 < file1 > file2 //如果不想覆盖原文件可以这样

除了有检查文件编码的功能以外,”enca”还有一个好处就是如果文件本来就是你要转换的那种编码,它不会报错,还是会print出结果来, 而”iconv”则会报错。这对于脚本编写是比较方便的事情。




GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐