java - 当在 Java 中的 Linux 服务器中选择日语时,下载 CSV 文件头会变得垃圾

标签 java linux encoding

enter image description here当我们使用 Java 代码 header 值从 Linux 服务器下载 CSV 文件时,对于日语来说是垃圾。 在窗口平台上运行时它工作正常。 以下是我的示例代码。

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 径ウ禄倶クュ

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

最佳答案

我发现这个问题已经解决了。我更改了下面的代码,标题值对日语来说不是垃圾。

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

关于java - 当在 Java 中的 Linux 服务器中选择日语时,下载 CSV 文件头会变得垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53370359/

相关文章:

java - 如何将 Short 数据类型与 @Cacheable 一起使用?

java 扫描仪不能在终端工作

python - 如何通过管道将 Unicode 传输到 PowerShell 中的 native 应用程序

macos - 在 OS X Lion 中,LANG 未设置为 UTF-8,如何修复?

python - 在 Python 2 中读取带有通用换行符的 UTF-8 文件

java - 无法跨程序访问jlabel

java - 线程 "AWT-EventQueue-0"java.lang.NullPointerException 中出现异常 - Paint()

java - 将 JFormattedTextField 设置为仅采用允许的值

linux - 从 shell 脚本中的源命令退出

linux - nasm 上的 execvp 用法