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