How to add zip entry with utf-8 name to zip

java, zip

Solution

seems this line solved my problem:

        zos.setCreateUnicodeExtraFields(UnicodeExtraFieldPolicy.ALWAYS);

can someone explain me what is this doing and why it works ?

Problem

I have a method which adds inputStream to zip as an entry: ``` private void addToZip(InputStream is, String filename) throws Exception { try { ZipEntry zipEntry = new ZipEntry(filename); zos.putNextEntry(zipEntry); byte[] bytes = new byte[1024]; int length; while ((length = is.read(bytes)) >= 0) { zos.write(bytes, 0, length); } zos.closeEntry(); } finally { IOUtils.closeQuietly(is); } } ``` The problem occurs when the filename contains an UTF-8 char like áé... In zip file it will be saved as `?????` and when I unzip it in ubuntu 12.10 it looks like: `N├бstroje` instead of `Nástroje`. For this example I used jdk6 but now I've also tried jdk7: ``` zos = new ZipOutputStream(fos, Charset.forName("UTF-8")); ``` But with no success. I also tried Apache Commons Zip and set encoding but also with no success. So how I can add this file with unicode symbols in filename to zip ?

Original source