非UTF-8字符集的JAR文件



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

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

(我想使用反射来修改私有字段ZipFile.zc后,JarFile()构造函数返回,但这种解决方案是不健壮的和oracle特定的)

根据文档,Charset参数仅使用"解码ZIP条目名称和注释"。因此,这对你来说是完全不相干的。当你从ZipFile或Jar中读取文件时,你会得到一个与所使用的字符集无关的InputStream。

因此,当将基于字节数组的InputStream转换为基于字符的reader时,您必须应用正确的字符集,例如通过使用InputStreamReader。

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

最新更新