使用JSP创build的Excel电子表格不显示Excel中的Unicode字符

我有一个应用程序需要将Unicode信息显示到从JSP中的表格转换而来的Excel电子表格中。 unicode信息在JSP中正确显示,但在Excel中不显示国际字符。

基本上在Excel中显示jsp表,并从下面一行开始:

response.setHeader("Content-Disposition","attachment;filename=report.xls"); 

然后在下面有以表格格式显示信息的<td>'s<tr>'s

我想我需要在response.setHeader行下的另一行,以便unicode正确呈现。

有什么想法吗?

你不应该用错误的内容types和文件扩展名的HTML <table>欺骗Excel。 而是使用一个servlet来创build一个真正的,完整的二进制XLS文件,例如Apache POI HSSF或JExcelAPI的帮助 。 他们会关心正确的字符编码。

您可以在JExcelAPI FAQ中find一个基本的启动示例,请查看如何从Servlet输出Excel文件? 下面是关联的摘录(免责声明:这是一个100%的复制粘贴,这不是我的代码风格,实际上应该放在一个包里面):

 import java.io.IOException; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class Sample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { OutputStream out = null; try { response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=sampleName.xls"); WritableWorkbook w = Workbook.createWorkbook(response.getOutputStream()); WritableSheet s = w.createSheet("Demo", 0); s.addCell(new Label(0, 0, "Hello World")); w.write(); w.close(); } catch (Exception e) { throw new ServletException("Exception in Excel Sample Servlet", e); } finally { if (out != null) out.close(); } } }