我使用ICsvBeanWriter将数据导出为CSV,并试图在Excel.But中打开它。如果加载csv文件并将编码从西欧更改为65001 Unicode( UTF-8 ),则无法通过default.But查看default.But中的中文字符,然后我能够看到excel.So中显示的汉字。我的问题是:“是否可以用默认的UTF-8编码打开excel.So?
Controller.java
response.setHeader("Content-Disposition",
"attachment; filename=Report " + downloadDateFormatted + ".csv");
response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaders.CONTENT_DISPOSITION);
**response.setContentType("text/csv;charset=UTF-8");**
CsvExporter csvExporter = new CsvExporter(transactions);
csvExporter.export(response);
CsvExporter.java
public void export(HttpServletResponse response) throws IOException {
csvWriter = new CsvBeanWriter(response.getWriter(), CsvPreference.STANDARD_PREFERENCE);
writeHeaderRow();
}
private void writeHeaderRow() throws IOException {
String[] csvHeader = {"Chinese address" };
csvWriter.writeHeader(csvHeader);
String[] nameMapping = { "chineseAddress" };
csvWriter.write(transaction, nameMapping);
}
csvWriter.close();
}
我尝试将字符集设置为utf-8,但它在西欧的Excel中仍然是默认打开的,我尝试使用UTF-16。但是,在其他编辑器中打开的result.When,如记事本,汉字显示得很好,但在Excel中不能工作。
发布于 2021-02-23 02:45:20
尝试使用UTF-8
并在文件开始时添加\uFEFF
。
这是字节顺序标记用来识别UTF-8编码的文件(不仅仅是字节顺序)。
用于快速测试的代码:
var writer = new FileWriter("/tmp/a.csv", StandardCharsets.UTF_8);
writer.write("\uFEFF"); // BOM
writer.write("test:,\u4E2D,ok"); // or writer.write("test:,中,ok");
writer.close();
在Excel中:
https://stackoverflow.com/questions/66331230
复制相似问题