【发布时间】:2014-06-18 07:45:35
【问题描述】:
我正在使用 openCSV 生成 CSV 文件 和 OutputStreamWriter 将该文件附加到 http 响应。
这里最大的问题是,例如下载的 CSV 文件中的 '€' 是 '‚¬'。显然编码是错误的,但我已将其设置为 'UTF-8'。此外,我将 pom.xml 中的编码设置为“UTF-8”。
response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".csv");
response.setContentType(BulkListExportConstants.CSV_CONTENT_TYPE);
OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream(), "UTF-8");
List<String[]> result = iSmsExportService.csvExport(columnNames);
CSVWriter csvWriter = new CSVWriter(osw, BulkListSharedConstants.CSV_SEPARATOR);
csvWriter.writeAll(result);
csvWriter.flush();
csvWriter.close();
osw.flush();
osw.close();
有什么建议吗?
【问题讨论】:
-
首先找出哪里出了问题:是通过线路发送的文件是正确的,接收者解释错误还是发送者已经发送了错误的东西?
-
您正在正确编码文档;您将其误读为 ISO-8859-1。
-
如果您通过任何 microsoft 产品(例如 excel)阅读文档,您需要在文件的第一个字节上设置 BOM(在 EF BB BF 之前)。
-
我添加了 UTF8_BOM = "\uFEFF";到 osw,它就像一个魅力。你能在下面写一个答案吗? :)
标签: java excel csv encoding inputstreamreader