Linux下解压Windows中的压缩包乱码解决办法

需要安装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'

 附上效果图

进入目录

来自1942年冬季攻势中的中央集团军的037号17吨救援拖车
原文地址:https://www.cnblogs.com/panther1942/p/10296924.html