背景

在linux下经常会遇到从windows下拷贝过来的zip文件解压乱码的问题,今天何三就来分享下如和使用python解决linux下解压zip文件乱码的问题,编写的python小脚本供大家参考

思路

  1. 出现乱码的原因大部分都是因为编码不统一造成的,windows下中文一般都是GBK编码,而linux下编码一般是UTF-8
  2. python中有一个zipfile解压模块,先利用zipfile读取zip文件中的每个文件,并将名称进行转码操作,也就是先从zip文件中正确的读取名称,然后在进行保存

代码实施

将下面的代码保存成uzip.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# uzip.py

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()

调用:

> uzip.py abc.zip