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里的别称。

  • 相关阅读:
    zoj 1239 Hanoi Tower Troubles Again!
    zoj 1221 Risk
    uva 10192 Vacation
    uva 10066 The Twin Towers
    uva 531 Compromise
    uva 103 Stacking Boxes
    稳定婚姻模型
    Ants UVA
    Golden Tiger Claw UVA
    关于upper、lower bound 的探讨
  • 原文地址:https://www.cnblogs.com/plodsoft/p/5984436.html
Copyright © 2011-2022 走看看