在Java中的Linux服务器中选择日语时,下载的CSV文件头变得不完整

时间:2018-11-19 07:50:04

标签: java linux encoding

enter image description here当我们使用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径ウ隲倶ク ュ

代码有什么问题,或者有其他方法可以解决此问题。

1 个答案:

答案 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);