当我们使用Java代码标题从Linux服务器下载CSV文件时,日语值变得乱七八糟。 在Windows平台上运行时,它工作正常。 以下是我的示例代码。
File file = File.createTempFile("temp", null);
String fileName = "Temp";
HttpServletResponse response;
CsvConfig config = new CsvConfig(',', '"', '\\');
config.setBreakString(config.getBreakString());
Csv.save(getApplicationData, file, CSVUtil.getDefaultConfig(),
new ColumnNameMappingBeanListHandler<WDTO>(WDTO.class)
.column(label 1, "Date")
.column(label 2, "Name")
.column(label 3, "description")
.column(label 4, "appName")
.column(label 5, "status"));
DownloadUtils.download(file, fileName, response);
此处,标签1,标签2等以两种语言(英语,日语)显示。当我们选择英语时,则可以在两种环境(Linux,Window)下正常工作。 但是,当我们选择日语时,它只能在窗口中正常工作,而不能在Linux中工作。
随附的图片显示了数据如何变得垃圾。
我的输出显示如下。
径ウ隲区律繝辅か繝シ繝隐ャ讥・径ウ隲玖・繧ケ繝・ ・繧ソ繧ケ
2018/11/13譌・蝣ア譌・蝣ア VJM径ウ隲倶ク ュ
代码有什么问题,或者有其他方法可以解决此问题。
答案 0 :(得分:2)
我发现此问题已解决。我在下面更改了代码,日语的标题值不是垃圾。
File file = File.createTempFile("temp", null);
String fileName = "Temp";
HttpServletResponse response;
CsvConfig config = new CsvConfig(',', '"', '\\');
config.setBreakString(config.getBreakString());
final OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file), "Shift_JIS");
Csv.save(getApplicationData, out , CSVUtil.getDefaultConfig(),
new ColumnNameMappingBeanListHandler<WDTO>(WDTO.class)
.column(label 1, "Date")
.column(label 2, "Name")
.column(label 3, "description")
.column(label 4, "appName")
.column(label 5, "status"));
DownloadUtils.download(file, fileName, response);