【发布时间】:2017-01-28 10:35:14
【问题描述】:
我有一个解压缩 zipfile 的应用程序,其中包含许多不同名称的文件。 Zipfile 中的某些文件有特殊字符。
解压缩适用于所有使用 API 23 的设备,目前为止。
使用 API 24 和 API 25,它会解压缩一些文件,但在解压缩特定文件(名称)时会出现 Zip 格式错误的错误 -> chÔteau_thierry (1814).jpa 之战(其中有一个特殊字符 Ô它)
如何在不操作 zip 的情况下解压缩带有特殊字符的文件。我的意思是它已经适用于少于 24 的 API。
有人可以帮我吗?
ZipFile zipFile = new ZipFile(zipname);
Enumeration enumeration = zipFile.entries();
while (enumeration.hasMoreElements()) {
ZipEntry zipEntry = null;
zipEntry = (ZipEntry) enumeration.nextElement(); <----- Craches, when it comes to the file : battle of chÔteau_thierry (1814).jpa
String sName = zipEntry.getName();
}
* 更新 *
压缩文件的链接: https://drive.google.com/file/d/0BzTzuiIaUzqkd3loR2dPdW03T28/view?usp=sharing
您必须在本地下载文件,因为 google drive 会隐式转换文件名。 (chateau_thierry 之战 (1814).jpa,法语)您只能在本地 zip 文件中看到字符 Ô。
Stacktrace,我只为 API 24 和 25 设备获取:
Hint : java.lang.IllegalArgumentException: MALFORMED[1]
at java.util.zip.ZipCoder.toString(ZipCoder.java:65)
at java.util.zip.ZipFile.getZipEntry(ZipFile.java:548)
at java.util.zip.ZipFile.-wrap2(ZipFile.java)
at java.util.zip.ZipFile$1.nextElement(ZipFile.java:530)
at java.util.zip.ZipFile$1.nextElement(ZipFile.java:508)
at solveraapps.chronicbrowser.ChronicBrowser.unzipImages(ChronicBrowser.java:8011)
at solveraapps.chronicbrowser.ChronicBrowser$16.run(ChronicBrowser.java:8442)
【问题讨论】:
-
崩溃的 Java 堆栈跟踪是什么?您能否上传一个演示该问题的示例 ZIP 文件?
-
非常感谢您的帮助。我刚刚参考 zipfile 和 stacktrace 更新了这个问题。还添加了一些代码,因此可以粘贴以重现。非常感谢。
-
该 ZIP 存档中没有名为
chÔteau.jpg的文件。 -
我看到了问题。您必须在本地下载 zip 文件。只有这样,您才会在档案中看到一个名为“chÔteau_thierry (1814).jpa 之战”的文件。我刚刚测试过了。 Google Drive 似乎进行了隐式转换。
-
在发表我之前的评论之前,我已经在本地下载了它。我看到一个
ba/目录。在那里,最接近的匹配是battle of chтteau_thierry (1814).jpa。