需要安装convmv和p7zip
根据自己的情况修改LANG和convmv里面的编码格式
这里我是将GBK转换成UTF-8的乱码更正
LANG是设置环境编码,作用范围仅在当前终端
然后调用7z解压
这是看目录会显示无效编码,因为文件名现在是GBK编码
然后调用convmv转换编码为UTF-8
如果不修改环境编码直接解压会导致7z将GBK编码的文件名以当前环境即UTF-8解码
之后再用convmv转换自然无法得到想要的结果
如果你的压缩包本身内部就是乱码,那么这个方法也无效,本方法只能在已知压缩包内编码的情况下修复解压乱码问题
如果尝试该方法后依然乱码,说明你的压缩包在压缩前的系统环境中不是GBK(CP936,GB2312,GB18030......),尝试修改convmv的-f参数为其他编码
(上面那个方法我没有试,因为我的压缩包乱码都是在Windows中文环境扔到Linux英文环境下发生的)
使用方法
需要两个参数
第一个为压缩包路径 只要7z支持应该都可以
第二个为输出目录
如果需要修改直接在7z那行改成自己需要的命令就行
比如有密码的话加上-p参数跟上密码
要注意7z的参数名和参数值之间没有空格
1 #!/bin/bash 2 3 echo 'begin' 4 archive=$1 5 target=$2 6 7 LANG=zh_CN.GB2312 8 7z x "$archive" -o$target 9 echo 'convert start' 10 convmv -f GBK -t UTF-8 -r $target --notest 11 echo 'convert finished' 12 echo 'end'
附上效果图
进入目录