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压缩包的中文处理问题

java内置了对zip格式压缩文件的处理,常用的的几个类包括:1、ZipFile2、ZipInputStream3、ZipOutputStream4、ZipEntry但在处理压缩文件中的中文入口时是会...
  • thinkpadleo
  • thinkpadleo
  • 2006-02-16 12:28:00
  • 2496

JAVA后台处理带有中文名称的ZIP压缩文件工具包

  • 2014年11月13日 11:02
  • 17KB
  • 下载

java下载压缩包文件zip

该案例从数据库查询出来数据,然后打包下载 @RequestMapping("/download") public void download(UCFQRCodeRequestBO qrCodeR...
  • diweikang
  • diweikang
  • 2017-07-21 14:27:41
  • 504

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

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

java解析压缩文件.zip,获取文件夹下的数据

/**  * 数据包Controller  * @author cookie  * @version 2017-08-23  */ public class BudgetDateCont...
  • qq_35634154
  • qq_35634154
  • 2017-08-25 16:19:09
  • 601

JAVA_API_1.7中文.zip

  • 2016年05月09日 12:05
  • 51.32MB
  • 下载

java上传 压缩包文件

package com.zip; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputSt...
  • kunkun378263
  • kunkun378263
  • 2014-12-11 13:23:43
  • 9945

JAVA实现多文件以ZIP压缩包导出

1、使用java实现吧服务器的图片打包成一个zip格式的压缩包导出,多个文件打包导出。 2、代码如下:**ImageByteUtil.java**public class ImageByteUtil...
  • lovelongjun
  • lovelongjun
  • 2017-07-26 09:23:06
  • 2407

Java操作Zip压缩文件遇到的编码问题

1、遇到的问题:在for循环操作zip文件(文件名包含中文)的过程中,报错如下:    Exception in thread "main" java.lang.IllegalArgumen...
  • u010965170
  • u010965170
  • 2017-12-10 11:32:24
  • 127

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

用过java做压缩或解压的都知道,jdk提供的zip只能按UTF-8格式处理,所有jdk提供的zip不能支持中文文件名采用Apache的zip包解决中文文件名问题(依赖 ant-1.9.6.jar...
  • tanksyg
  • tanksyg
  • 2015-11-19 14:58:03
  • 6207
收藏助手
不良信息举报
您举报文章:java中zip压缩包的中文处理问题
举报原因:
原因补充:

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