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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值