错误完整的报告如下:
java.lang.IllegalArgumentException
        at java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:299)
        at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:238)
        at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:73)
        at cn.qtone.cxyx.cp.pubFun.Decompress.unzip(Decompress.java:55)
        at cn.qtone.cxyx.cp.pubFun.Decompress.decompress(Decompress.java:25)
        at cn.qtone.cxyx.cp.nrkgl.Content.serviceAction(Content.java:166)
        at cn.qtone.cxyx.cp.nrkgl.Content.doGet(Content.java:142)
        at cn.qtone.cxyx.cp.nrkgl.Content.doPost(Content.java:408)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:154)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
        at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterC
hain.java:106)
        at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain
.java:178)
        at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocatio
n.java:229)
        at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:267
)
        at com.caucho.server.port.TcpConnection.run(TcpConnection.java:388)
        at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490)
        at com.caucho.util.ThreadPool.run(ThreadPool.java:423)
        at java.lang.Thread.run(Thread.java:595)在网上也找到了相应的解决办法,但是不成功~~~流汗~~搞了一天了~~~郁闷啊~~~~网上解决方法是:4.新增member,这个member记录编码方式
private String encoding="UTF-8";
5.再新增一个建构式如下(这个建构式可以让这个class在new的时候,设定档名的编码)
public CZipInputStream(InputStream in,String encoding) {
super(new PushbackInputStream(in,512),new Inflater(true),512);
usesDefaultInflater = true;
if(in == null) {
throw new NullPointerException("in is null");
}
this.encoding=encoding;
}6.找到ZipEntry e = createZipEntry(getUTF8String(b, 0, len));这一行,将它改成如下:
ZipEntry e=null;
try
{
if (this.encoding.toUpperCase().equals("UTF-8"))
e=createZipEntry(getUTF8String(b, 0, len));
else
e=createZipEntry(new String(b,0,len,this.encoding));
}
catch(Exception byteE)
{
e=createZipEntry(getUTF8String(b, 0, len));

但是,我这边就是不行,在创建对象这一步挂了
resin没有任何提示,也没有执行下面的语句~~~
高手请指教啊

解决方案 »

  1.   

    找了两天,郁闷啊~~~
    同事做过用ant压缩再解压缩
    但是他在压缩的时候就设置好编码方式的,因此解压缩时不会出错,但是我的是让客户自己压缩再上传的,不能设定压缩的编码方式哪位高手或者前辈有解决过这个问题啊,帮我一下,谢谢呀~~~~~~~~~~~~
      

  2.   

    其实最主要的问题是在客户那里用winrar压缩他们要上传文件的编码方式与java.util.zip中解压缩的编码方式不同但是解决这个问题的方法——修改java.util.zip.ZipInputStream和ZipOutputStream两个类 在我这里却行不通,当new对象的时候就中断了,也不给点出错信息~娘的,郁闷ing……
      

  3.   

    首先这台电脑是不是zh_cn的字符集?比如*nix要set LC_ALL=zh_cn.GB18030,然后系统本身有对应的中文字体。其他的就容易了...
      

  4.   

    to cm4ever:我电脑装的是英文版xp sp2但是我不确定我的电脑的字符集,不过像eclipse这样地软件,它识别本机时是中文不知道哪里可以确切的查看本机的默认字符集呢?