导航:首页 > 编程系统 > 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乱码相关的资料

热点内容
文件合同打印格式怎么调 浏览:77
win10文件共享提示服务器没有响应 浏览:788
倒t型电阻网络相对稳定度怎么算 浏览:367
怎么样编程弹窗 浏览:730
咨询投标文件内容包含 浏览:248
win7win10c盘空间越来越小 浏览:806
悠途出行app在哪里选座 浏览:67
突袭2哪个版本好玩 浏览:549
网站怎么申请认证 浏览:676
短信apk是什么文件 浏览:940
app官方下载在哪里 浏览:511
iphone5s改名字 浏览:772
win10文件夹打开一直闪跳 浏览:208
win10摄像头不能拍照 浏览:56
云阳数控编程培训哪里学 浏览:519
文件的存放路径怎么改 浏览:583
cad字体文件如何导出 浏览:236
cs16需要cdkey哪个文件里 浏览:817
如何让另一个表格的数据关联 浏览:368
来自app的快捷指令是怎么有的 浏览:844

友情链接