我试图从JAVA导出和MS Excel表单,其中包含一些多语言(日语)内容。我尝试了几件事,但多语言(日语)内容在导出的Excel表格中没有正确显示。
我从数据库中取出内容(我已经检查了数据库,正确保存了多语言 - 日语内容)
String fileName = "output"+".xls";
ExcelExport excelExporter = new ExcelExport();
excelExporter.ExportExcel(fileName, ....); // Writing Database Fields to Excel
File file = new File(fileName);
int length = 0;
response.setContentType("application/vnd.ms-excel");
response.setContentLength((int) file.length());
response.setHeader("Content-Disposition", "attachment; filename=\""+ file.getName() + "\"");
ServletOutputStream outputStream = response.getOutputStream();
byte[] bbuf = new byte[1024];
DataInputStream in = new DataInputStream(new FileInputStream(file));
while ((in != null) && ((length = in.read(bbuf)) != -1))
{
outputStream.write(bbuf, 0, length);
}
in.close();
outputStream.flush();
outputStream.close();
file.delete();
它向我显示编码 iso-8859-1 (通过使用 response.getCharacterEncoding(); 功能),这可能是问题吗?因为英语在Excel文件中完美无缺,所以只有多语言(日语)出现错误
答案 0 :(得分:0)
请勿关闭响应的outputStream
。此外,使用BufferedInputStream而不是DataInputStream,它更适用于对象。
不需要对in != null
进行测试。 bbuf维度可能更大,比如4096。