在Java中,使用指定的字符集解析ZIP存档可以通过使用ZipFile(File, Charset)
构造函数来完成。
JarFile(在util包中)继承自ZipFile,但不提供使用UTF-8以外的字符集的方法。我需要解析包含未使用UTF-8编码的字符串的Jar文件。这样做最干净的解决办法是什么?
(我想过在JarFile()构造函数返回后立即使用反射来修改私有字段ZipFile.zc
,但是这个解决方案并不健壮且特定于Oracle。)
答案 0 :(得分:1)
Charset参数根据documentation仅使用“解码ZIP条目名称和注释”。因此,这对你来说完全无关紧要。当您从ZipFile或Jar读取文件时,您将获得一个与使用的字符集无关的InputStream。
因此,在将基于字节数组的InputStream转换为基于chaaracter的读取器时,必须应用正确的字符集,例如使用InputStreamReader。
编辑:
如果我们在谈论ZIP文件中的文件名,您应该能够在同一文件上创建并行ZipFile实例。使用JarFile.getName()
读取jar文件路径。