在zip存档中使用Unicode字符作为文件名
我将包含诸如 类的特殊字符 到另一个文件夹中,例如
。
我可以压缩文件,但是问题是文件名自动更改为 。
如何在zip归档文件中支持Unicode字符作为文件名?
回答:
这一点取决于您用于创建存档的代码。在 旧 的Java压缩类不是很灵活,因为你需要。
您可以使用Apache Commons
Compress。迈克尔·西蒙斯(Michael Simons)编写了这段漂亮的代码:
ZipArchiveOutputStream ostream = ...; // Your initialization code hereostream.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