Проблема с загрузкой CSV-файла в кодировке utf-8 с использованием Spring boot и HttpServletResponse - PullRequest
0 голосов
/ 08 февраля 2020

Мне нужно было создать и загрузить CSV-файл с кодировкой utf-8 в моем приложении для весенней загрузки. Проблема в том, что Excel 2019 не может открыть его правильно, и, как вы можете догадаться, все эти символы utf-8 отображаются в виде странных символов. Я где-то читал, что добавление BOM символов в начало файла csv решит проблему. Я сделал это вручную, и это работает на самом деле. Но когда я использую HttpServletResponse следующим образом, он не работает:

HttpServletResponse response = ...;//coming from rest api call
response.addHeader("Content-Type", "text/csv; charset=UTF-8");
response.addHeader("Content-Disposition", "attachment; filename=test.csv");
response.setCharacterEncoding("UTF-8");

/*write o response file csvWriter and flush/close it*/
try {
    ServletOutputStream outputStream = response.getOutputStream();
    outputStream.write(new byte[]{239, 187, 191});//add utf-8 BOM bytes
    outputStream.write("some,utf8,text".getBytes());
    outputStream.close();
} catch (IOException e) {
    //handle exception
}

Я проверил сгенерированный файл test.csv с некоторым HEX средство просмотра, чтобы увидеть, есть ли эти BOM байты в начале файла. Очень странно, что их там не было. Хотя я явно записываю их в файл, они не были записаны в начале файла. очень очень страгне. Кто-нибудь может помочь?!

...