java中zip压缩包的中文处理问题

转载 2007年10月11日 19:57:00

java内置了对zip格式压缩文件的处理,常用的的几个类包括:



1、ZipFile


2、ZipInputStream


3、ZipOutputStream


4、ZipEntry


但在处理压缩文件中的中文入口时是会报IllegalArgumentException异常,但这并非是其不支持中文,而是因为其默认的压缩文件中的文字编码格式为unicode,而常用的压缩工具如WINZIP/WINRAR压缩后的文件中的文字编码格式为acsii,因此如果需要处理常用的ZIP文件,就必须手工来处理一下了。


常见的几种方式有:

1、修改相关类中的处理方式,关键代码如下(以ZipInputStream为例):


原代码: ZipEntry e = createZipEntry(getUTF8String(b, 0, len));


修改为:


 ZipEntry e = null;


//这里encoding是成员变量,可以在构建函数中赋值


if (encoding=null) e=createZipEntry(getUTF8String(b, 0, len));


else e=createZipEntry(new String(b, 0, len, encoding));


替换的方式也有三种:



1、创建替换类(在同一包名下),并替换rt.jar中的同名类


2、创建替换类(在同一包名下),单独打包并放在类路径中(但有些服务器可禁用java开头的包)


3、在应用中创建自己的类,随应用发布


 

2、使用ANT包中的org.apache.tools.zip中的相关类,但不包含ZipInputStream的对应类。

java实现zip的压缩和解压(支持中文文件名)

http://blog.csdn.net/tanksyg/article/details/49927825  用过Java做压缩或解压的都知道,jdk提供的zip只能按UTF-8格式...
  • fangquan1980
  • fangquan1980
  • 2017年04月14日 17:16
  • 619

java实现zip的压缩和解压(支持中文文件名)

用过java做压缩或解压的都知道,jdk提供的zip只能按UTF-8格式处理,所有jdk提供的zip不能支持中文文件名采用Apache的zip包解决中文文件名问题(依赖 ant-1.9.6.jar...
  • tanksyg
  • tanksyg
  • 2015年11月19日 14:58
  • 5099

java上传 压缩包文件

package com.zip; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputSt...
  • kunkun378263
  • kunkun378263
  • 2014年12月11日 13:23
  • 9457

java分割文件并且合并文件(zip,rar....)

JAVA分割文件,把一个ZIP文件通过指定的大小分割,然后合并起来。 分割 package com.zkq.objectstream; import java.io.BufferedInputS...
  • kai46385076
  • kai46385076
  • 2014年09月07日 20:53
  • 1079

java压缩zip文件中文乱码问题 linux 下

ant.jar import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream;public voi...
  • liujava621
  • liujava621
  • 2014年07月08日 16:10
  • 1181

java实现文件压缩下载----压缩下载zip

文件压缩下载 Controller层: /** *文件压缩下载 *billname:文件名 *filename:文件存放路径 */ public vo...
  • wy123123000
  • wy123123000
  • 2017年06月27日 16:03
  • 1593

Java压缩、解压缩、添加文件到压缩包工具类

Java压缩、解压缩、添加文件到压缩包工具类,解决文件名乱码、中文解压报错等问题。具体功能请查看源码。 package cn.elwy.common.util.io; import jav...
  • elwy_cn
  • elwy_cn
  • 2015年01月30日 16:58
  • 1462

java将多个文件一起打成zip包后下载实例

//文件打包下载     public static HttpServletResponse downLoadFiles(List files,             HttpServletRe...
  • fangqun663775
  • fangqun663775
  • 2016年11月28日 14:31
  • 7384

Java不解压直接读取压缩包文件

比较简单,直接上代码! package com.wisdom.csmp.tools.utils; import java.io.BufferedReader; import java.io.Inp...
  • viper2046
  • viper2046
  • 2016年10月21日 14:30
  • 412

解决java中ZipFile解压缩时候的中文路径和乱码问题

JAVA中对jar文件或zip文件解压的时候,可以使用JDK内置的API:JarFile和ZipFile,在windows下解压这2种格式文件的时候,经常报以下错误: Exception in th...
  • aitangyong
  • aitangyong
  • 2014年10月24日 17:56
  • 4557
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中zip压缩包的中文处理问题
举报原因:
原因补充:

(最多只允许输入30个字)