当前位置:首页 » 操作系统 » linuxzip乱码

linuxzip乱码

发布时间: 2023-07-23 03:38:18

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

② 急!!java linux 从服务器上创建一个zip包 向zip包里写文件 下载zip包中文乱码

用的是什么zip库,有没有设置编码格式。
例如,zip4j的话,zf.setFileNameCharset("UTF-8");

③ linux与windows 互传的文件,中文名称出现乱码

windows
系统自带和第三方软件使用的编码不同就会导致这样。vsftp
不支持编码识别自动转换。所以两个客户端软件用的不同编码就会让
vsftp
的编码混乱。一般来说
linux
现在都用
utf-8
一些新版本的
ftp
软件默认也会去转换为
utf-8
进行传输文件名,但
windows
似乎旧版本还是用本地编码进行
io。也就是简体中文用
gb
系列,繁体中文用
big
,英文用
ascii
什么的互相不同的编码。

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

文件本向是UTF8的,但是你的系统当前用的可能不是,比如是GB2312,或者GBK之类的,这样看utf8格式的文件就会是乱码。

⑤ Linux系统终端字体乱码(非管理员账户操作指南)

问题:使用一台Linux系统的机器,终端总是显示有乱码,不是中文乱码,看起来像是英文乱码,我这强迫症又受不了了

解决方案:
Linux字符编码默认为UTF-8,如果出现英文乱码有可能是系统设置的编码方式为GBK。

设置locale的根本就是设置一组总共12个LC开头的变量,不包括LANG和LC_ALL。

优先 级:LC_ALL > LC_* > LANG

可以看出原系统设置的为中文字体显示和运行的语言环境,所有的设置都是使用的 zh_CN.gbk ,因中英文字符编码方式不同,可能造成英文字符或者空格显示有乱码。

5.退出后再次查看locale(再次登录才生效)
乱码的字符消失了。locale转变为:

⑥ 通过java控制linux环境下解压文件夹后中文文件名是乱码

将linux当前环境设置为中文环境即可。
修改/etc/sysconfig/i18n 文件
LANG="zh_CN.GB2312"

热点内容
kld数据库 发布:2025-03-15 15:46:27 浏览:262
互联网数据库设计 发布:2025-03-15 15:44:42 浏览:239
自适应滤波c语言 发布:2025-03-15 15:40:25 浏览:967
cs狙击脚本 发布:2025-03-15 15:25:15 浏览:344
平板搭建ftp服务器 发布:2025-03-15 15:24:32 浏览:832
中枢源码指标 发布:2025-03-15 15:17:15 浏览:118
手柄压缩 发布:2025-03-15 15:15:41 浏览:995
威纶通触摸屏编程软件 发布:2025-03-15 15:10:22 浏览:502
光遇安卓圣岛季是什么 发布:2025-03-15 15:10:06 浏览:714
socket缓存大小 发布:2025-03-15 15:10:05 浏览:967