У меня проблема с настройкой кодировки для файла CSV, который я создаю в своем веб-приложении (тестирование на ноутбуке windows на сервере Tomcat9). Вот что я делаю:
byte[] data = result.toString().getBytes();
ByteArrayOutputStream outStream = new ByteArrayOutputStream(data.length);
outStream.write(data, 0, data.length);
response.setContentType("text/csv;charset=UTF-8");
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setHeader("Content-Disposition", "attachment; filename=\"AEP_report.csv\"");
response.setContentLength(outStream.size());
ServletOutputStream responseOutStream = response.getOutputStream();
outStream.writeTo(responseOutStream);
outStream.flush();
outStream.close();
responseOutStream.flush();
responseOutStream.close();
Я пытался изменить кодировку на windows-1252
и другие. Конечно, у меня нет проблем с генерацией файла, но когда потом я go записываю в блокнот ++ и меняю кодировку, чтобы посмотреть, работает ли он, я всегда получаю один и тот же результат. Для ANSI
все выглядит хорошо, но когда я перехожу на UTF-8, это то, что он показывает:
, когда должно отображаться "Cürey".
Так что, очевидно, файл всегда создается в ANSI.
Тогда возникает моя настоящая проблема, но в основном она такая же, как и раньше. В моей системе качества (на сервере Linux) это похоже, код не влияет на кодировку, но, очевидно, там файл всегда создается с кодировкой UTF-8. Я думаю, это зависит от операционной системы. Поэтому я думаю, что моя ошибка заключается в определении типа контента. Я сделал какую-то ошибку в определении?
Заранее спасибо за вашу помощь.