写入ServletOutputStream的Zip文件(使用ZipArchiveOutputStream创建)会伪装日文文件名

时间:2017-10-26 19:37:31

标签: java spring servlets utf-8 outputstream

output = new ZipArchiveOutputStream(response.getOutputStream());

output.setCreateUnicodeExtraFields(UnicodeExtraFieldPolicy.ALWAYS);
response.setContentType(APPLICATION_ZIP);

output.putArchiveEntry(new ZipArchiveEntry("日本語.txt");
// write file to output stream
output.closeArchiveEntry();

但是下载后文件名是乱码,而文件(文件内容)没问题。

如果我使用FileOutputStream将zip文件写入文件系统,文件名将保留原样,但只有在使用ServletOutputStream传输文件时,Zip文件中的文件名才会出现乱码。

有解决方法吗?我是否还需要为输出流设置字符编码,不确定它是否真的存在?

0 个答案:

没有答案