本文作者:admin

Linux 下 zip 文件解压乱码如何解决?

芯岁网络 2024-11-30 15:02 0 0条评论

一、Linux 下 zip 文件解压乱码如何解决?

由于zip格式中并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,因此,导致这些zip文件在Linux下解压时出现乱码问题,因为Linux下的默认编码是UTF8。

目前网上流传一种unzip -O cp936的方法,但一些unzip是没有-O这个选项的。

我使用的版本 unzip 6.0 debian modified 版本有这个选项

我发现另外两种解决方案可用。

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()

Windows 用户屏蔽两条 print 语句,Linux 用户不用屏蔽

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 .

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

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

二、linux中ascii码文件显示乱码?

linux显示ascii码文件显示乱码说明了文件中存在的结构部门的数据片段,导致了数据无法按照正常的方式被读取出来。

三、linux文件中文乱码镜像怎么挂载?

LANG="zh_CN.GB18030" LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" 把这2行注释掉试试

四、linux 显示乱码?

1.查看当前系统语言

登陆linux系统打开操作终端之后,输入 echo $LANG可以查看当前使用的系统语言。如

2.查看安装的语言包

查看是否有中文语言包可以在终端输入 locale命令,如有zh cn 表示已经安装了中文语言。

3.可以通过网上下载安装中文语言包yum groupinstall chinese-support安装完后输入locale命令。

4.如何修改系统语言为中文

1 临时更换语言

如果只是临时更换linux系统的语言环境,可以通过输入设置 LANG=语言名称, 如中文是 LANG=zh_CN.UTF-8

2.修改系统默认语言

以上方法是通过修改设置系统默认的语言配置

如vi /etc/sysconfig/i18n (注意改好之后重启一下系统)。

五、linux服务器怎么复制文件?

Linux cp(英文全拼:copy file)命令主要用于复制文件或目录。

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

六、linux中文文件名乱码怎么解决?

Linux文件名、文件内容乱码,主要原因是windows上的中文编码默认是GBK,而Linux默认中文编码为UTF-8,由于编码不一致,所以导致乱码问题。为了解决这个乱码,需要对文件进行转码,具体如下:

1、前提保证已安装了convmv;

2、具体convmv的用法:Convmv –f 源编码 –t 新编码 [选项] 文件名一般常用参数:-r 递归处理子目录--notest 真正进行操作,默认情况下是不对文件进行真实操作的,只是一个预览--list 显示所有支持的编码--unescap 可以做一个转义3、比如我们有一个utf8的文件名,要求转换成gbk编码,命令如下:Convmv –f utf-8 –t gbk –notest 文件名也可以使用linux下最好用的编码转换工具iconv来进行转码操作。例子:将GBK编码的文件转换成UTF-8iconv -f GBK -t UTF-8 gbkfile.txt > utf8file.txt

七、linux服务器怎么解压rar文件?

linux下要常用到此功能

在Linux下如何解压RAR文件(hmkart) ,需要从

下载RAR for Linux 3.2.0(也可以到网上搜索rar for linux),解压揭开后make

然后可以用unrar e youfilename.rar解压rar文件。

具体操作为,下载rar for linux后解压到某一目录,如:/usr/local/rar目录,然后执行如下的命令即可解压

/usr/local/rar/rar x filename,关于其它的功能,请看其帮助。

八、怎样上传文件到linux服务器?

常见有使用:scp命令、xshell软件里的xftp程序、U盘挂载、服务器自带的lrzsz程序。

一、scp使用说明:

1、把本机的文件传给目的服务器:

scp get66.pcap root@192.168.1.147:/super

备注:把本机get66.pcap拷贝到147这台服务器的super目录下,需要提供147的密码

2、在本机上执行scp,把远端的服务器文件拷贝到本机上:

scp root@192.168.1.147:/super/dns.pcap /

备注:在本机上执行scp,把远端服务器的dns.pcap文件拷贝到本机的根目录下

3、拷贝目录下的所有文件:

scp -r /super/ root@192.168.1.145:/

备注:把/super/目录下的所有文件,拷贝到145服务器根目录下

二、xshell软件里的xftp程序:

xshell这个软件很好,强烈推荐哦!!!

里面有个xftp小插件,可以支持文件在笔记本和服务器互传,这个小插件需要单独在网上下载,直接百度搜xftp,很方便。

1、点击xshell软件上的xftp图标(前提xftp已经下载好)

2、然后就可以互传文件了啊

三、U盘挂载

文件在U盘,那好办,直接插到服务器上,然后挂载上,就能把U盘上的文件拷贝到服务器上了

1、执行fdisk -l查看:

fdisk -l

备注:插上U盘后,fdisk -l查看服务器识别到了,/dev/sdc是我的U盘,16G的

2、挂载到自定义目录下:

mkdir /upan

新建一个目录

mount /dev/sdc1 /upan/

把U盘挂载到刚新建的目录下

cd /upan/ls

就能看到U盘里所有的文件了

3、把文件拷到服务器home下

cp autorun.inf /home/

把U盘里的autorun.inf拷贝到服务器的home目录下

4、卸载U盘

文件拷到服务器后,建议先手动执行命令,然后再拔U盘,防止U盘损坏!!!

cd /umount /dev/sdc1

好了,拔出U盘吧(按照上面的来,先退回到根目录下,再执行umount命令,不然会报错提示U盘在使用,无法卸载)

九、linux下的文件名怎么是乱码的?

由于安装英文版的系统不支持中文,出现中文文件名乱码。

下面操作时在centos上安装中文支持:

1)先下载并安装两个语言包:

fonts-chinese-3.02-12.el5.noarch.rpm

fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm

#rpm -ivh fonts-chinese-3.02-12.el5.noarch.rpm

#rpm -ivh fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm

或者

#yum install fonts-chinese-3.02-12.el5.noarch.rpm

#yum install fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm

2)修改/etc/sysconfig/i18n

j将原来的注释掉,这段东西拷进去

LANG="zh_CN.GB2312"

SUPPORTED="zh_CN.GB2312:zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"

SYSFONT="latarcyrheb-sun16"

3)最后重启就ok了。

十、求大linux服务器大佬解决文件空间不释放问题?

还有进程持有删除了的文件,系统空间就不会真的释放。

简单举个例子,运行着的tomcat的日志catalina.out占用10G空间,直接rm删除catalina.out,然后用df查看空间已经空出来了,但实际还是没释放的。

这时如果关闭或重启tomcat进程,硬盘空间就真的释放了。

你可以试试重启可能持有你删除文件的进程。