导航:首页 > 编程系统 > linux解压zip乱码

linux解压zip乱码

发布时间:2024-11-23 11:19:33

1. linux中unzip解压时中文乱码如何解决

更改源码解决乱码
调试发现问题出现在MultiByteToWideChar方法里,
如 MultiByteToWideChar(CP_ACP,0,fn,-1,tfn,MAX_PATH); 到这里时fn中的name属性值还是正常的,在这个方法内部执行完tfn就乱了。
解决方法:
打开unzip.cpp源文件,找到函数
ZRESULT TUnzip::Get(int index,ZIPENTRY *ze)
{ // ......
// ......} 12345

这个函数里有
#ifdef UNICODE
MultiByteToWideChar(CP_UTF8,0,fn,-1,tfn,MAX_PATH);#else
strcpy(tfn,fn);#endif12345

把 CP_UTF8 改为CP_ACP, ( CP_ACP 指示要使用当前设置的 API 默认 Windows ANSI 代码页)
重新编译后
这样就解决了解压中文文件名称乱码的问题
编译时解决源码问题(无需更改源码)
上面的情况,我们我观察到unzip源代码这段开始的地方有判断
#ifndef Ext_ASCII_TO_Native 1

这样问题似乎更简单了,不用改源代码,只需在make时定义 Ext_ASCII_TO_Native 即可,这样 Ext_ASCII_TO_Native 实际为一个空的宏,不进行任何转换操作。
比如,使用下面的方法编译
make -DExt_ASCII_TO_Native 1

或者在bash执行下面两行
export LOCAL_UNZIP=-DExt_ASCII_TO_Native
make12

unzip解压缩含中文文件名zip包是出现乱码的问题解决!
如果您的系统已经安装了unzip
方法一 unzip行命令解压,指定字符集
通过unzip行命令解压,指定字符集
unzip -O CP936 xxx.zip (用GBK, GB18030也可以)1

方法二 在环境变量中,指定unzip参数
在环境变量中,指定unzip参数,总是以指定的字符集显示和解压文件
/etc/environment中加入2行
UNZIP=”-O CP936″
ZIPINFO=”-O CP936″12

方法三 利用pyton来处理
复制以下内容(Python)保存未myuzip.py文件脚本,并修改运行权限为可运行(chmod +x uzip)
#!/usr/bin/env python# -*- coding: utf-8 -*-# uzip.pyimport osimport sysimport zipfileprint "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()

这样以后我们解压缩时只需要运行此文件即可
./myuzip.py xxxx.zip

2. linux下zip文件解压出现乱码怎么办

是文件名乱码还是什么?
如果是文件名乱码就是系统字库的问题,更新一下相应字库应该能解决(或者强行重命名也没问题),windows下也经常会有这种问题的,不是什么太大的毛病

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

1、这是zip格式的缺陷,zip文件格式中没有字段标志出文件名的编码格式。Windows下生成的zip文件中的编码是GBK/GB2312等,而linux下的默认编码格式为UTF-8,所以才会出现乱码。


2、解决方法

1、使用unzip解压的时候,指定字符集(需要unzip支持,有些unzip命令不支持大O选项,自己可以安装较新的unzip版本):

md5@crc4:~/$unzip-OCP936test.zip

2、借助于p7zip和convmv:

a、在Fedora下的命令是

su-c'yuminstallp7zipconvmv'

b、在ubuntu下的安装命令是

sudoapt-getinstallp7zipconvmv

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

LANG=C7zaxyour-zip-file.zip
convmv-fGBK-tutf8--notest-r.

说明:

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

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



4. 在linux中解压zip文件,中文字符乱码,请问如何解决。不要粘贴复制。 系统本身的字符集是utf-8

如果你文件夹中只有这一个zip文件的话,可以用命令unzip *.zip 应该就OK了

5. linux系统,文件是utf-8格式的为什么会乱码呢

乱码的问题有很多可能,第一、linux安装时是否支持中文;第二、要用命令查一下格式:echo $LANG;第三确认格式是否需要在系统中修改格式类型;第四连接终端(putty,secureCRT)等工具的编码是否和系统的编码一致,不致要改为一致就可以了。

6. 上传到linux的zip解压乱码怎么解决

解压缩乱码和zip本身无关,应该是你的Linux操作系统设置的系统语言造成的。
一般来讲Linux的中文默认编码是zh_CN.UTF-8,而Windows的是GB2312,如果你在Windows创建zip压缩包,压缩包中的文件名称是按照GB2312打包的,到Linux解压缩自然成了乱码。
解决方法有两种,可以将Linux的默认编码变为zh_CN.GBK,这可以通过修改/etc/sysconfig/i18n文件来完成;另一种方法就是改用ftp传递未经压缩的文件,这样文件名会被FTP服务自动转码。

7. linux下zip文件解压出现乱码怎么办

压缩包里是中文的吧, linux如果装了中文语言支持的话,把语言环境设置一下 LANG=zh_CN.utf-8

阅读全文

与linux解压zip乱码相关的资料

热点内容
iframe跨域调用js对象 浏览:178
苹果手机能分文件夹吗 浏览:679
fdb文件怎么删除里面内容 浏览:638
龙江网络配置什么路由器 浏览:169
如何使用指标导入数据 浏览:866
平时用什么app看nba 浏览:503
win10想以管理员身份运行bat文件 浏览:85
合并单元格中的其他数据如何排序 浏览:331
电脑窗口程序在哪 浏览:281
前女友把我微信删了又加什么意思 浏览:655
win10不识别无线xboxone手柄 浏览:403
汽车之家app怎么看成交价 浏览:908
abc文件破解密码 浏览:516
怎么登录米家app账号 浏览:165
兆欧表多少转读数据 浏览:414
多媒体网络通讯 浏览:747
文件上的表填不了内容该怎么办 浏览:899
弟弟迷上网络小说怎么办 浏览:766
网络上有人想访问我的地址怎么办 浏览:730
linux解压zip乱码 浏览:839

友情链接