linux系统服务器乱码问题吗,Linux centos 服务器乱码问题

链接:https://www.zhihu.com/question/20523036/answer/35225920

来源:知乎

7z方案

需要安装p7zip和convmv,在Fedora下的命令是

su -c 'yum install p7zip convmv'

在ubuntu下的安装命令是

sudo apt-get install p7zip convmv

安装完之后,就可以用7za和convmv两个命令完成解压缩任务。

LANG=C 7za x your-zip-file.zip

convmv -f GBK -t utf8 --notest -r .

convmv -f gb2312 -t utf8 -r --notest *

第一条命令用于解压缩,而LANG=C表示以US-ASCII这样的编码输出文件名,如果没有这个语言设置,它同样会输出乱码,只不过是UTF8格式的乱码(convmv会忽略这样的乱码)。

第二条命令是将GBK编码的文件名转化为UTF8编码,-r表示递归访问目录,即对当前目录中所有文件进行转换。

echo $LANG

904  locale

905  export LC_ALL=zh_CN.UTF-8

906  export LANG=zh_CN.UTF-8

以下为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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值