这个主要是因为zip文件对文件名的编码默认为当前环境的locale,如在windows下压缩的zip文件,在linux下其中的中文名便会乱码。
这是zip格式的缺陷,所以目前并没有很完美的解决办法。当前的办法有如下两种:
使用upzip命令的时候加个参数upzip -O CP936 a.zip用python写一个脚本来解压
#!/usr/bin/env python # -*- coding: utf-8 -*- # unzip-gbk.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()
参考warning: 该程序没有经过我的验证,请自己试验以保证正确性
http://note.ninehills.info/linux-gbk.html
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/7795.html
这个主要是因为zip文件对文件名的编码默认为当前环境的locale,如在windows下压缩的zip文件,在linux下其中的中文名便会乱码。 这是zip格式的缺陷,所以目前并没有很完美的解决办法。当前的办法有如下两种: 使用upzip命令的时候加个参数 upzip -O CP936 a.zip 用python写一个脚本来解压 #!/usr/bin/env python # -*- c...
安装(12.04及以上): sudo apt-get install unar 使用: 假设需要解压的ZIP包是foo.zip lsar foo.zip #列出所有文件如果列出的文件名已经正确 unar foo.zip #解压所有文件如果列出的文件名还不正确 lsar -e GB18030 foo.zip #指定使用GB18030编码列出所有文件 unar -e GB18030 foo.z...
安装(12.04及以上): sudo apt-get install unar 使用: 假设需要解压的ZIP包是foo.zip lsar foo.zip #列出所有文件如果列出的文件名已经正确 unar foo.zip #解压所有文件如果列出的文件名还不正确 lsar -e GB18030 foo.zip #指定使用GB18030编码列出所有文件 unar -e GB18030 foo.z...
安装(12.04及以上): sudo apt-get install unar 使用: 假设需要解压的ZIP包是foo.zip lsar foo.zip #列出所有文件如果列出的文件名已经正确 unar foo.zip #解压所有文件如果列出的文件名还不正确 lsar -e GB18030 foo.zip #指定使用GB18030编码列出所有文件 unar -e GB18030 foo.z...
摘要:软件及版本选择是目前用户数量数一数二的发行版,背后有大土豪维护,可以说是轻量级用户的最佳选择。而是目前最新的版本,目前已经发布了半年了,基本是目前支持最好的版本。是目前官方推荐的最佳的运行模式。 软件及版本选择 Ubuntu 14.04 Ubuntu 是目前用户数量数一数二的发行版,背后有大土豪维护,可以说是轻量级用户的最佳选择。而 14.04 是目前最新的 LTS 版本,目前...
阅读 2621·2021-10-11 10:58
阅读 1718·2021-09-24 09:47
阅读 374·2019-08-30 14:19
阅读 1502·2019-08-30 13:58
阅读 1332·2019-08-29 15:26
阅读 525·2019-08-26 13:45
阅读 2007·2019-08-26 11:53
阅读 1659·2019-08-26 11:30