zoukankan      html  css  js  c++  java
  • 解决windows中打包的zip在linux中解压文件名乱码的问题

    zip压缩包中的文件名编码跟随系统设定,但zip文件中不会记录文件名编码,在windows中打包zip,放到linux中解压时,解压程序并不会自动转换文件名编码,因此会出现文件名乱码。解决这个问题的方法是让解压程序保留原始文件名,解压完毕后再转换编码。

    我使用7z作为解压程序,因为7z对超过2GB的压缩包有很好的支持,而tar、unzip等都不支持超过2GB的文件。安装7z:

    $ sudo apt-get install p7zip-full

    然后设置系统编码:

    $ export LANG=C

    解压zip文件:

    $ 7za x /path/to/zip

    解压之后在gui文件管理器中可能会看到文件名后面出现(invalid encoding)的后缀,不用管它,使用ls命令看到的文件名是没有那个后缀的。

    然后使用convmv转换编码。安装convmv:

    $ sudo apt-get install convmv

    convmv支持的部分参数如下:

     -f  源编码

     -f  目标编码

     --notest  convmv默认只会显示文件名转换后的结果而不会实际进行转换。使用这个参数使convmv对文件名进行实际的编码转换。

     --list  列出convmv支持的所有编码

     -r  递归转换所有子目录的文件名编码

    转换:

    $ convmv -f cp936 -t utf8 --notest /path/to/file

    cp936是gbk编码在windows里的别称。

  • 相关阅读:
    【Spring Framework】10、代理模式
    【Spring Framework】8、使用注解开发
    Codeforces 516E
    AtCoder Grand Contest 055 题解
    Codeforces 1606F
    贪心/构造/DP 杂题选做
    整数拆分最大乘积
    CSP-S2021 被碾压记
    洛谷 P2791
    LCT 小记
  • 原文地址:https://www.cnblogs.com/plodsoft/p/5984436.html
Copyright © 2011-2022 走看看