linux getit文件乱码,winzipaes文件名乱码解决方案
winzipaes是一个开源的基于javaZip的加密压缩工具
目前代码托管在google上(http://code.google.com/p/winzipaes)
需要依赖bcprov的包,可以去maven上下载,也可以在Linux公社资源下载,见本文下面的下载地址。
用过的人可能都会发现当使用它,往压缩包里添加的文件名有汉字时,会出现乱码
这是因为winzipaes默认使用的iso-8859-1编码格式,不乱吗才怪啊。。
下面是我的修改方法,基于的是(winzipaes_src_20120104.zip)不对的地方,大虾别拍我啊
首先在ExtZipOutputStream里添加一个设置编码格式的方法,如下:
public void setEncoding(String encoding) {
this.encoding = encoding;
utf8Flg |= isUTF8(encoding);
}
protected boolean isUTF8(String encoding) {
if (encoding == null) {
// check platform's default encoding
encoding = System.getProperty("file.encoding");
}
return "UTF8".equalsIgnoreCase(encoding)
|| "UTF-8".equalsIgnoreCase(encoding);
}
这里有个地方需要注意,当文件名是utf8编码格式的时候,需要设置Zip包的通用位标志
第十一个比特为1,代码修改如下:
修改ExtZipEntry类的initEncryptedEntry方法
public void initEncryptedEntry(boolean utf8Flg) {
setCrc(0); // CRC-32 / for encrypted files it's 0 as AES/MAC checks integritiy
this.flag |= 1; // bit0 - encrypted
if (utf8Flg) {
this.flag |=(1 << 11); // 通用位标志第十一个比特为1
}
//flag |= 8; // bit3 - use data descriptor
....
}
另附上ZIP包的压缩格式,想深入研究的同学可以参考下:http://www.pkware.com/documents/casestudies/APPNOTE.TXT
然后将ExtZipOutputStream的134行和158行的iso-8859-1替换成上面设置的编码格式
接着,再将106行文件名长度取得的代码改成entry.getName().getBytes(encoding).length
以上就是大致的修改点。
把完整的修改代码也打了个包,省得大家再去修改啦,希望对大家有帮助。
写个简单的使用sample吧:
AESEncrypterBC bc = new AESEncrypterBC();
AesZipFileEncrypter azfe = new AesZipFileEncrypter(
new File("要生成的zip包名.zip"), bc);
azfe.setEncoding("UTF-8"); // 编码格式是在这传进去的
azfe.add(new File("要往zip包里添加的文件路径"), "zip包里显示的文件名字", "密码");
azfe.close();
本文相关资源下载:
------------------------------------------分割线------------------------------------------
具体下载目录在 /2014年资料/11月/6日/Java解压带密码的RAR压缩文件
------------------------------------------分割线------------------------------------------
linux getit文件乱码,winzipaes文件名乱码解决方案相关推荐
- 解决浏览器下载文件时中文文件名乱码的问题
解决浏览器下载文件时中文文件名乱码的问题 很多时候我们需要在后台为前端提供文件下载的功能,但是当文件名中有中文时我们不能直接将文件名返回,需要对中文的文件名进行处理后再返回. 一.文件下载contro ...
- 下载文件时,文件名乱码。
Unicode网页中上传下载文件时发生文件名乱码的问题 最 近有一个需要支持unicode的项目在上传和下载文件时遇到文件名乱码问题. 项目背景, 这个项目关键之处在于需要支持unicode以及支持M ...
- linux 文件名的长度不得超过,linux对文件路径和文件名长度的限制
linux对文件夹以及文件名的长度做了限制,以ubuntu为例,描述文件路径为:/usr/include/linux/limits.h #ifndef _LINUX_LIMITS_H #define ...
- linux解压文件名乱码,linux下解压zip文件时,文件名乱码的解决(转载)
转自:http://blog.sina.com.cn/s/blog_6261f8690101c1gx.html windows下的zip文件,在linux下解压时,经常会出现文件名乱码的情况. 主要原 ...
- java解压_Java ZIP压缩和解压缩文件(解决中文文件名乱码问题)
JDK中自带的ZipOutputStream在压缩文件时,如果文件名中有中文,则压缩后的 zip文件打开时发现中文文件名变成乱码. 解决的方法是使用apache-ant-zip.jar包(见附件)中的 ...
- CentOS7 Java应用文件名乱码问题解决(文件下载和创建文件导致的文件名乱码)
场景描述 spirngboot 部署的Java应用在服务器上,一直都运行得很好. 最近突然发生了乱码问题,同事已通过启动参数 java -Dfile.encoding=utf-8 -jar test. ...
- 文件上传文件名乱码的解决方法及形成乱码原因
采用Struts2提供的文件下载机制时,如果要下载的文件的的名字是中文的话,就会出现乱码问题.解决办法如下(只截取部分代码): UserFavoritesAttachment ...
- Linux代码文件中的中文乱码
起因: 打开代码文件,代码可能是Windows传输过来的,抑或是从其他地方下载的,在linux系统中打开,出现乱码 . 解决方法(在linux平台上用iconv命令纠正中文乱码): ...
- Linux提取文件夹中文件名,linux命令提取文件夹内特定文件的路径与文件名
最近需要实现自动化搜寻特定文件夹下的特定文件,并且需要分别保存文件路径与文件名.算然使用python的walk能够实现,但是感觉复杂了些.于是想看看linux自带的命令是否能完成这项工作. 环境 需要 ...
最新文章
- Quartz2D绘图
- 使用Fiddler抓取手机HTTP流量包
- 数据库原理实验二 数据库管理 实验报告
- client中周期性边界_HFSS中周期性边界条件的设置
- wxWidgets:wxDateSpan类用法
- 【详解】()调试方法从线索(错误征兆)出发,通过分析这些线索之间的关系而找出故障,是从个别推断一般的方法。
- .NETCore 实现容器化Docker与私有镜像仓库管理
- 在过程中要正式批准可交付成果_干货!软考高项项目管理知识体系5大过程组47个过程...
- 算法笔记_065:分治法求逆序对(Java)
- 轴只显示5个刻度_告别大象腿,迎接魅力美腿,变身女王你只需5个方法
- 如何把电压这个浮点值转字符串输出到串口
- Python标准库参考-sched
- java编程——【Mybatis】之${}和#{}的区别
- 如何在 Windows 2000 中安装 Microsoft 环回适配器
- HALCON 20.11:深度学习笔记(4)--- 网络和训练过程
- java入门第二季--封装--java中的this
- 使用java udp开发图片拆包组包例子
- [电脑桌面壁纸]macOS Big Sur 桌面壁纸分享
- 通州区机器人比赛活动总结_机器人科技活动总结.doc
- 2017年网易推出他们的“淘宝客”啦
热门文章
- 【干货】用户画像和精准化平台系统实践.pdf(附下载链接)
- 【报告分享】2020年中国数据驱动型企业成长路径研究报告.pdf(附下载链接)...
- PyTorch系列入门到精通——DataLoader与Dataset
- leetcode力扣12. 整数转罗马数字
- 数据挖掘之模型选择和融合
- 站在BERT肩膀上的NLP新秀们(PART I)
- test 1.php,test1.php
- 2021年Tiktok用户增长和使用模式?
- 计算机前端学哪些好学,Web前端能干什么工作,好学吗
- jquery mysql实现加入购物车_使用jQuery实现购物车结算功能