首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZipEntry文件名编码?

ZipEntry文件名编码?
EN

Stack Overflow用户
提问于 2010-11-03 16:40:41
回答 2查看 3.1K关注 0票数 0

我找不到任何关于zip文件中文件名编码的文档。

我必须将带有德语元音的文件名打包到zip中,加载到Android中,然后在那里解压。然后我必须使用存储在另一个文件中的名称来引用这些文件。后者是UTF-8,所以变音没有问题。但我需要确保,在Android上解压后,解压后的文件具有正确的名称。

目前,我在Windows7上使用info-zip来打包归档文件,在Android上使用API函数来解压,一切都正常。但是,如果我使用Java SDK中的jar或7z进行打包,Android上的文件就会带有错误的名称。这让我想知道,是否有合适的解决方案来解决这个问题(除了只使用古老的ASCII文件名)。

我假设Android使用Unicode文件名,所以我所要做的就是强制zipper程序也用Unicode对文件名进行编码。这是可能的吗?

谢谢你的时间,RG

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-06 02:31:55

我找到了一种解决方法。

代码语言:javascript
复制
public static String iso (String s)
    {
        byte bytes[]=EncodingUtils.getBytes(s,"iso-8859-1");
        return new String(bytes);
    }

此函数用于将ISO-8859-1字符串转换为Java Unicode字符串。您可以将它应用于从ZipEntry.getName()获得的文件名,并使用它来存储文件。这让你可以在Android上生成zip并阅读内容。

对于从Windows (比方说)到Android的传输,您可以使用JDK中的jar进行压缩和解压缩。Info-zip不工作!

这是一个非常酷的解决方案,但是对于日语字符或ISO-8859-1以外的任何字符,它都将失败。那就不知道该怎么办了。

票数 1
EN

Stack Overflow用户

发布于 2010-11-03 17:02:10

上次我检查SD卡时,它的字符集是ISO8859-1,没有UTF-8。这是为了与Windows系统兼容。我猜您必须将Java Unicode字符串转换为ISO8859-1。但我认为最好的解决方案是只使用ASCII字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4085293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档