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

  • 相关阅读:
    不可重叠最长重复子串
    离散化
    hash是一门优雅的暴力
    Detect the Virus (字符串转化+AC自动机)
    病毒侵袭(AC自动机变形)
    hdu2069(Coin Change)
    Hie with the Pie(poj3311)
    poj3254(状压dp入门第一道题,很详细)
    map系统学习
    ACM-ICPC 2018 南京赛区网络预赛 B. The writing on the wall
  • 原文地址:https://www.cnblogs.com/plodsoft/p/5984436.html
Copyright © 2011-2022 走看看