2016年02月04日 代码异常 浏览(193) 收藏

java 解压zip文件中文名在linux环境中乱码怎么办?

使用ant jar解压zip文件时,解压出的中文文件名全部乱码了,而且使用各种转码方式都无法将乱码的中文名转正常。

乱码如下:

�ֽ��������װ���Ӧ�� 2.txt
JDK������������.txt
JDK������������.txt
getResourceAsStream�÷� .txt
getResourceAsStream�÷� .txt

有什么好的解决方案呢?

最佳回答
由于上传压缩文件到linux环境中,压缩文件内文件名会被转码。通常windows下解压显示正常,但是到了linux环境中文文件名就乱码了。
一般指定解压的编码方式为gbk即可解决问题,例如:

ZipFile zipFile = new ZipFile(zipfilePath,"gbk"); 
        Enumeration<?> emu = zipFile.getEntries(); 
        ZipEntry entry = null; 
        List<String> zList = new ArrayList<String>();
        while (emu.hasMoreElements()) { 
            entry = (org.apache.tools.zip.ZipEntry) emu.nextElement();
            entry.setUnixMode(644);
            if (entry.getName().startsWith(".") || entry.isDirectory()) { 
                continue; 
            } 
            zList.add(entry.getName());
        } 
        zipFile.close();
感谢萤火虫的贡献!
赞一下 0 人赞了本文