30
Sep
关于linux和windows下压缩包内中文乱码的解决方案
0 COMMENTS
一定有人跟我遇到相同的问题:
首先我们的网站服务器是Linux的,自己常用的电脑又是Windows的,备份服务器数据是习惯性使用tar压缩,结果备份文档传到windows下解压后,中文名文件和文件夹全部报废,都是乱码。
又或者windows下不小心网站内很多文件中文名的,压缩成zip包上传linux服务器后unzip解压后,又是该死的乱码。。。头痛啊!
简单而粗暴的解决方案这就告诉大家:
对于第一种状况,由Linux下压缩后将压缩包拷贝到windows的,请不要使用tar命令压缩,而是直接使用zip命令
#zip -r abc.zip abc
压缩当前目录下abc文件夹到当前目录下abc.zip文件,而后将abc.zip文件在windows下解压就不会乱码了。至于zip和unzip的安装和使用自己百度吧!
对于第二种状况,由windows下压缩的zip包在linux下unzip的乱码问题,请先将zip包,比如abc.zip上传到目录下,然后在目录下用vim新建一个文件如gbkzip
#vim gbkzip
之后将如下代码黏贴感谢yucoat
#!/usr/bin/env python #-*- coding:utf8 -*- ''' gbkzip - unzip Windows zip file and convert gbk to utf8 author: YUCOAT(yucoat^yucoat.com) date: 2012-9-28 homepage: www.yucoat.com If you find any bug please contact me, thank you! ''' import os import sys import zipfile if __name__ == '__main__': if len(sys.argv) != 2: print 'Usage: gbkzip < zipfile.zip >' exit(1) try: zip_obj = zipfile.ZipFile(sys.argv[1], 'r') except IOError as e: print e.strerror exit(1) for name in zip_obj.namelist(): name_utf8 = name.decode('gb2312') path = os.path.dirname(name_utf8) if (not os.path.exists(path)) and path: os.makedirs(path) #Start Exacting filedata = zip_obj.read(name) if not os.path.exists(name_utf8): tmp = open(name_utf8, 'w') tmp.write(filedata) tmp.close() print 'Exacting %s ... done!'% (name_utf8) zip_obj.close()
然后wq保存,之后请赋予gbkzip文件执行权限
#chmod +x gbkzip
最后,使用gbkzip来解压缩abc.zip文件
#./gbkzip abc.zip
解压出来的文件终于正常了哦!
本文地址:http://cms.xisix.com:8880/post-118.html
添加新评论