zoukankan      html  css  js  c++  java
  • 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吨救援拖车
  • 相关阅读:
    hdu6055(求正方形个数)
    树状数组模板(改点求段 / 该段求点 / 改段求段)
    poj2763(lca / RMQ + 线段树)
    poj3728(lca / tarjan离线)
    JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
    JVM垃圾回收机制
    虚拟机字节码执行引擎
    Java中程序初始化的顺序
    Java中ClassLoader浅析.
    Python中的self
  • 原文地址:https://www.cnblogs.com/panther1942/p/10296924.html
Copyright © 2011-2022 走看看