archlinux 解压zip乱码 & 文件转编码

        在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”则会报错。这对于脚本编写是比较方便的事情。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值