`
Marshal_R
  • 浏览: 129804 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Linux文件乱码

阅读更多

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  # 如果不想覆盖原文件可以这样

 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics