美文网首页软件工程师成长日记Linux我用 Linux
[Linux] 解压zip文件中文乱码问题解决

[Linux] 解压zip文件中文乱码问题解决

作者: zhwhong | 来源:发表于2016-12-26 23:01 被阅读152次

    在Linux下,解压电脑上的.zip文件时,有时候由于编码问题,中文文件名或者文件夹名会出现乱码……

    为了方便,于是自己写了一个python的解压.zip文件的脚本,亲测可用。

    脚本myunzip.py

    #!usr/bin/env python2
    # -*- coding utf-8
    
    import os
    import sys
    import zipfile
    
    print "processing File " + sys.argv[1]
    
    file = zipfile.ZipFile(sys.argv[1], "r");
    for name in file.namelist():
        utf8name=name.decode('gbk')
        print "Extracting " + utf8name
        pathname = os.path.dirname(utf8name)
        if not os.path.exists(pathname) and pathname != "":
            os.makedirs(pathname)
        data = file.read(name);
        if not os.path.exists(utf8name):
            fo = open(utf8name, "w")
            fo.write(data)
            fo.close
    file.close()
    

    解压文件时,直接执行:

    $ python myunzip.py xxx.zip
    

    或者,先增加可执行权限,然后执行:

    $ chmod +x myunzip.py
    $ ./myunzip.py xxx.zip
    

    Example:


    附录(Linux下使用enca查看文件编码并转换)

    在Linux做开发或者系统管理遇到乱码是经常的事情,主要Windows下中文的编码多用GB2312和GBK,而Linux下是UTF-8。很多时候 涉及到和Windows平台系统的通信免不了编码的转化,可能大部分人都用iconv库函数(包含在glib中)和iconv命令来执行编码转换,今天我要推荐的是另一个shell下编码转换工具enca。用它不仅可以转换编码,还可以查看文件的原始编码,使用上也比iconv方便一些。

    Ubuntu下安装enca很简单,apt-get一下就行了。

    $ sudo apt-get install enca
    

    enca用法如下:

    • enca -L zh_CN file  检查文件的编码
    • enca -L zh_CN -x UTF-8 file  将文件编码转换为”UTF-8″编码
    • enca -L zh_CN -x UTF-8 < file1 > file2  如果不想覆盖原文件可以这样

    除了有检查文件编码的功能以外,”enca”还有一个好处就是如果文件本来就是你要转换的那种编码,它不会报错,还是会print出结果来, 而”iconv”则会报错。这对于脚本编写是比较方便的事情。

    相关文章

      网友评论

      • deccin:直接用unar就可以吧
        zhwhong:@deccin 恩,Unarchiver是可以,不过感觉mac下用unar的多
      • AlicFeng:小伙子,推荐比较强大的enca编码转换工具
        zhwhong: @Alic灿 嗯,谢谢大神指教😊
      • 艾雨寒:GB2312 似乎有種不可描述的力量在支撐。
        zhwhong:@艾雨寒 比GBK有时候好,不过都用utf-8不就得咯,省得麻烦~

      本文标题:[Linux] 解压zip文件中文乱码问题解决

      本文链接:https://www.haomeiwen.com/subject/uwrsvttx.html