如果我们将数据从JSP导出到csv文件,那么UTF字符就是垃圾

时间:2011-06-15 11:15:07

标签: jsp utf-8 character-encoding

数据来自Flex的utf格式,但是当我们导出到csv文件时,它已损坏。如果我们在notepad ++中打开相同的csv文件,则editplus会显示正确的字符。 - 有日本和韩国炭。

for是我们正在使用的代码段。请注意,出口时我们可以处理不同的lang。 我们在java中编写了演示应用程序,它是工作文件。

我们已经把UTF8 + BOM,文件能够在csv中正常打开。 (这是来自Java代码)但是如果我们尝试从jsp页面添加相同的内容,它就无法正常工作。

<%
    MxHtmlUtil.jspInitScript(request, response);
    response.setContentType("application/csv; charset=UTF-8"); 
    response.setHeader("content-disposition", "attachment; filename=multi-cms-search.csv");

    if (request.getParameter("content") != null)
        out.println(request.getParameter("content"));
%>

添加bom如下但不在jsp页面中工作,它在java代码中工作正常。

    out.print("\ufeff"); 
    out.println(request.getParameter("content"));

1 个答案:

答案 0 :(得分:0)

JSP是一种视图技术,旨在生成和发送HTML输出,而不是其他文件格式。 <% %>之外的所有空格和换行符都发送到输出。它可能已经腐蚀了这一个和另一个。

从JSP中删除所有空格,或者更好地将所有Java代码放在普通的Java类中。为此,Servlet非常合适。

请注意,您还应该致电

response.setCharacterEncoding("UTF-8");
在将任何字节写入响应主体之前

。它指示作者使用什么字符集将写入的字符转换为响应体中的字节。