Французский, Испанский акцентированные символы не отображаются правильно в Excel

Я пытаюсь сгенерировать отчеты на разных языках, таких как французский, испанский и т. Д. Отчет просматривается в MS Excel 2007. Он отображается нормально на английском, но не на французском и не на испанском при исполнении в среде Linux.

Все языки работают в Windows Server, но при запуске его в Linux возникает проблема, описанная выше.

Код на Java, и я начал так:

  String contentType = "text/csv; charset=utf-8";
  // resp is HttpServletResponse
  resp.setCharacterEncoding("utf-8");
  resp.setHeader("Cache-Control", "max-age=0,must-revalidate");
  resp.setHeader("Pragma", "cache");
  resp.setDateHeader("Last-Modified", System.currentTimeMillis());
  resp.setHeader("Content-disposition", "attachment; filename=\"Report.csv\"");
  resp.setContentType(contentType);
  OutputStream os = resp.getOutputStream();

  os.write(new byte[] { (byte)0xEF, (byte)0xBB, (byte)0xBF }); 
  //os.print("\uFEFF".getBytes()); <<- tried this too, did not worked!

  //where sb is StringBuffer sb = new StringBuffer();
  //and string values were added by sb.append("\"" + someString + "\",");

  os.write(sb.toString().getBytes());

Пожалуйста, помогите и спасибо заранее.

2 ответа

Вам нужно указать charset в вашем вызове getBytes(). Не указывая кодировку, вы говорите Java использовать кодировку по умолчанию для любой платформы, на которой этот код запускается. При открытии на другой платформе результат, скорее всего, неверный. Вы можете просто попробовать getBytes( "UTF-8")...

Это уже работает / закрыто, я нашел исправление в:

Microsoft Excel искажает диакритические знаки в файлах.csv?

Другие вопросы по тегам