


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java中压缩与解压-中文文件名乱码解决办法 收藏 本文参阅了台湾JSP学习网部分内容,略有增删.java对於文字的编码是以 unicode为基础,因此,若是以ZipInputStream及ZipOutputStream来处理压缩及解压缩的工作,碰到中文档名或路径,那当然是以unicode来处理罗!但是,现在市面上的压缩及解压缩软体,例如winzip,却是不支援unicode的,一碰到档名以unicode编码的档案,它就不处理。 那要如何才能做出让WinRar能够处理的压缩档呢?那就得从修改ZipInputStream及ZipOutputStream对於档名的编码方式来着手了。我们可以从jdk的src.zip取得ZipInputStream及ZipOutputStream的原始码来加以修改一、ZipOutputStream.java1.从jdk的src.zip取得ZipOutputStream.java原始码,另存到一个新文件中,档名改为CnZipOutputStream.java。2.开始修改原始码,将class名称改为CnZipOutputStream3.建构式也必须更改为CnZipOutputStream4.新增member,这个member记录编码方式 private String encoding=UTF-8;5.再新增一个建构式(这个建构式可以让这个class在new的时候,设定档名的编码) public CZipOutputStream(OutputStream out,String encoding) this(out); this.encoding=encoding; 6.找到byte nameBytes = getUTF8Bytes();(有二个地方),将它修改如下:1. byte nameBytes = null; 2. try 3. 4. if (this.encoding.toUpperCase().equals(UTF-8) 5. nameBytes =getUTF8Bytes(); 6. else 7. nameBytes= .getBytes(this.encoding); 8. 9. catch(Exception byteE) 10. 11. nameBytes=getUTF8Bytes(); 12. 二、ZipInputStream.java1.从jdk的src.zip取得ZipInputStream.java原始码,另存到一个新文件中,档名改为CnZipInputStream.java。2.开始修改原始码,将class名称改为CnZipInputStream3.建构式也必须更改为CnZipInputStream4.新增member,这个member记录编码方式 private String encoding=UTF-8;5.再新增一个建构式如下(这个建构式可以让这个class在new的时候,设定档名的编码)public CZipInputStream(InputStream in,String encoding) this(in); this.encoding=encoding;6.找到ZipEntry e = createZipEntry(getUTF8String(b, 0, len);这一行,将它改成如下:1. ZipEntry e=null; 2. try 3. 4. if (this.encoding.toUpperCase().equals(UTF-8) 5. e=createZipEntry(getUTF8String(b, 0, len); 6. else 7. e=createZipEntry(new String(b,0,len,this.encoding); 8. 9. catch(Exception byteE) 10. 11. e=createZipEntry(getUTF8String(b, 0, len); 12. 以上两个档案储存後compile产生CZipOutputStream.class及CZipInputStream.class,使用winzip开启 java_homejrelibrt.jar这个档案,将CnZipOutputStream.class及 CnZipInputStream.class加进去,以後当压缩及解压缩时有中文档名及路径的问题时,就可以指定编码方式来处理了。使用方法:CnZipOutputStream zos=new CnZipOutputStream(OutputStream os,String encoding);CnZipInputStream zins=new CnZipInputStream(InputStream ins,String encoding);对于前面文章中文件打包下载中遇到的中文文件问题,解决手法是:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大生态考试题目及答案七
- 车辆工程考试题库及答案
- 经营管理中的新质生产力应用
- 新质生产力的四大主要特点
- 医患关系处理方法
- 民族民间考级课件
- 七夕超市促销活动策划方案
- 民族政策教学课件
- 解读新质生产力核心内涵
- 2025年全科医学常见病诊断治疗能力模拟考试答案及解析
- 2025-2026学年冀人版(2024)小学科学二年级上册(全册)教学设计(附教材目录 )
- 2025年河北大学版(2024)小学信息科技三年级(全一册)教学设计(附目录 P179)
- 鲁科版高中物理必修第三册 第4章闭合电路欧姆定律与科学用电 第1节闭合电路欧姆定律 课件
- 普通鱼缸买卖协议书
- T/CECS 10360-2024活毒污水处理装置
- 体重管理相关试题及答案
- 2026届高职单招考试大纲英语词汇(音标版)
- 临床护理文书书写规范课件
- 2025纯电动路面养护车技术规范
- 寄生虫课件 吸虫学习资料
- 2025变压器中性点直流偏磁监测装置
评论
0/150
提交评论