具有非UTF-8字符集的JAR文件

时间:2015-06-09 17:12:14

标签: java jar character-encoding

在Java中,使用指定的字符集解析ZIP存档可以通过使用ZipFile(File, Charset)构造函数来完成。

JarFile(在util包中)继承自ZipFile,但不提供使用UTF-8以外的字符集的方法。我需要解析包含未使用UTF-8编码的字符串的Jar文件。这样做最干净的解决办法是什么?

(我想过在JarFile()构造函数返回后立即使用反射来修改私有字段ZipFile.zc,但是这个解决方案并不健壮且特定于Oracle。)

1 个答案:

答案 0 :(得分:1)

Charset参数根据documentation仅使用“解码ZIP条目名称和注释”。因此,这对你来说完全无关紧要。当您从ZipFile或Jar读取文件时,您将获得一个与使用的字符集无关的InputStream。

因此,在将基于字节数组的InputStream转换为基于chaaracter的读取器时,必须应用正确的字符集,例如使用InputStreamReader

编辑: 如果我们在谈论ZIP文件中的文件名,您应该能够在同一文件上创建并行ZipFile实例。使用JarFile.getName()读取jar文件路径。