java.lang.IllegalArgumentException: MALFORMED
问题描述
处理文件名存在中文的zip包时,控制台报错
原因
windows环境下,默认字符集为GBK,ZipFile默认使用UTF-8字符集,当文件名存在中文时,处理时就会报错
解决方法
创建ZipFile时,设置字符集为GBK(JDK 1.7以上)
ZipFile zip = new ZipFile(file, Charset.forName("GBK"));
附测试代码:
public class ZipFileCharsetTest { public static void main(String[] args) { try { File file = new File("E:\test.zip"); ZipFile zip = new ZipFile(file, Charset.forName("GBK")); Enumeration<? extends ZipEntry> iter = zip.entries(); while (iter.hasMoreElements()) { ZipEntry entry = iter.nextElement(); System.out.println(entry.getName()); } zip.close(); } catch (Exception e) { e.printStackTrace(); } } }