0

我现在正在调试一个 Java servlet,它将几个字符串导出到一个 CSV 文件中。

它应该是非常标准的,只是对于简体中文字符串,它将在生成的 CSV 文件上显示为问号。

我用谷歌搜索了很多解决方案,这是我认为最合理的一个,我把它放在我的代码中:

    response.setContentType("text/csv;charset=gb18030");
    response.setCharacterEncoding("gb18030");
    response.setHeader("Content-Disposition", "attachment;filename=Contacts.csv");

    response.getWriter().write(returnString);
    response.getWriter().flush();
    response.getWriter().close();

但是,它不适用于我的情况。我已经用“UTF-8”替换了“gb18030”,仍然没有运气。

输入数据以下列方式出现:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
CsvExporter.writeCsvFile(dataRecordList, f_csvExportMappings, baos);
String returnString = new String(baos.toByteArray());

专家能否就类似问题提出一些建议?提前致谢。

4

2 回答 2

0

检查输入流中使用的字符集。通常,我们使用“GBK”或“GB2312”进行中文字符集编码。

于 2013-07-09T09:13:32.103 回答
-1

尝试阅读returnString为 UTF-8:

String returnString = baos.toString("UTF-8");//or whatever charset you need

然后,不要写字节数组,而是直接写字符串:

response.setCharacterEncoding("UTF-8");//or whatever charset you need
PrintWriter writer = response.getWriter();  
writer.println(returnString);
于 2013-07-09T09:11:22.907 回答