gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:02:32 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

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

关于java - 具有非 UTF-8 字符集的 JAR 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com