在zip存档中使用Unicode字符作为文件名

我将包含诸如 类的特殊字符 到另一个文件夹中,例如

我可以压缩文件,但是问题是文件名自动更改为 。

如何在zip归档文件中支持Unicode字符作为文件名?

回答:

这一点取决于您用于创建存档的代码。在 的Java压缩类不是很灵活,因为你需要。

您可以使用Apache Commons

Compress。迈克尔·西蒙斯(Michael Simons)编写了这段漂亮的代码:

ZipArchiveOutputStream ostream = ...; // Your initialization code here

ostream.setEncoding("Cp437"); // This should handle your "special" characters

ostream.setFallbackToUTF8(true); // For "unknown" characters!

ostream.setUseLanguageEncodingFlag(true);

ostream.setCreateUnicodeExtraFields(

ZipArchiveOutputStream.UnicodeExtraFieldPolicy.NOT_ENCODEABLE);

则最终Charset在ZipOutputStream构造函数上有一个参数(可以是UTF-8)

无论如何,最大的问题是,许多实现都不理解Unicode编码,因为 原始的

ZIP文件格式是ASCII,并且没有Unicode的正式标准。

以上是 在zip存档中使用Unicode字符作为文件名 的全部内容, 来源链接: utcz.com/qa/402601.html

回到顶部