Linux文件乱码
使用Linux系统多多少少都遇到过文件名乱码或者文件内容乱码的情况,其实主要是系统之间编码方式不同造成的,windows文件名编码方式可能是gbk,而Linux默认是utf-8,这样就会导致在windows的文件在Linux下面显示乱码。不过,通过下面几点技巧就可以完美摆脱乱码困扰。
1、zip文件解压文件名乱码
方案一:如果系统unzip支持-O选项的话可以这样
unzip -O cp936 your-zip-file.zip
方案二:python脚本
#!/usr/bin/env python # -*- 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()
首先把上面代码保存为unzip.py文件,然后执行下面的命令解压zip文件
python unzip.py your-zip-file.zip
方案三:7z解压
su -c 'yum install p7zip convmv' # Fedora系统的安装方式 LANG=C 7za x your-zip-file.zip convmv -f gbk -t utf8 --notest -r your-zip-file/ # -r递归转换整个目录
方案四:wine + windows解压软件
假如十分不幸,以上的操作都失败了,那么还有一个万能的方法,直接在wine里面安装windows解压软件来解压你的文件,这下没话说了吧!
2、文件内容乱码
方案一:iconv工具
iconv -f gbk -t utf-8 file1 -o file2 # gbk编码转换为utf-8
方案二:enca工具
# -L指明文件语言,一般可以省略 enca -L zh_CN file # 检查文件的编码 enca -L zh_CN -x UTF-8 file # 将文件编码转换为"UTF-8"编码 enca -L zh_CN -x UTF-8 file1 file2 # 如果不想覆盖原文件可以这样