我正在使用 Java 在主 zip(名称 finalZip.zip)中创建一些 zip 文件,这些文件名包含 áóç 等字符。当我尝试创建一个 zip 文件时,文件名是错误的。例如,当 3-ORDINÁRIA-2017-05-03.zip 时,它会出现 3-ORDIN+üRIA-2017-05-03.zip
String zipName= number + "- ORDINÁRIA -" + sdf.format(sdfComplete.parse(date.getTime()) + ".zip";
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(bos);
try {
bos = createZipFile(); // populate each zipFile with some images
// generating zip file, ex: 6-ORDINÁRIA-2017-03-15.zip
zipFinal.putNextEntry(new ZipEntry(zipName));
zipFinal.write(bos.toByteArray());
zipFinal.closeEntry();
}
...
Run Code Online (Sandbox Code Playgroud)
我想要带有 UTF-8 字符集的 zip 文件。我该如何解决这个字符集问题?
使用 public ZipOutputStream(OutputStream out, Charset charset)构造函数指定条目名称和注释的字符集。
该方法的 javadoc :
创建新的 ZIP 输出流。
参数:
输出实际的输出流
charset用于对条目名称和注释进行编码的字符集
例如,这使用 UTF-8 字符集:
ZipOutputStream zip = new ZipOutputStream(bos, java.nio.charset.StandardCharsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)