我找不到任何关于zip文件中文件名编码的文档。
我必须将带有德语元音的文件名打包到zip中,加载到Android中,然后在那里解压。然后我必须使用存储在另一个文件中的名称来引用这些文件。后者是UTF-8,所以变音没有问题。但我需要确保,在Android上解压后,解压后的文件具有正确的名称。
目前,我在Windows7上使用info-zip来打包归档文件,在Android上使用API函数来解压,一切都正常。但是,如果我使用Java SDK中的jar或7z进行打包,Android上的文件就会带有错误的名称。这让我想知道,是否有合适的解决方案来解决这个问题(除了只使用古老的ASCII文件名)。
我假设Android使用Unicode文件名,所以我所要做的就是强制zipper程序也用Unicode对文件名进行编码。这是可能的吗?
谢谢你的时间,RG
发布于 2010-11-06 02:31:55
我找到了一种解决方法。
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以外的任何字符,它都将失败。那就不知道该怎么办了。
发布于 2010-11-03 17:02:10
上次我检查SD卡时,它的字符集是ISO8859-1,没有UTF-8。这是为了与Windows系统兼容。我猜您必须将Java Unicode字符串转换为ISO8859-1。但我认为最好的解决方案是只使用ASCII字符。
https://stackoverflow.com/questions/4085293
复制相似问题