我现在正在调试一个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());
专家能否就类似问题提出一些建议?提前谢谢。
答案 0 :(得分:0)
检查输入流中使用的字符集。 通常,我们使用“GBK”或“GB2312”进行中文字符集编码。
答案 1 :(得分:-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);