Java 法语、西班牙语重音字符在Excel中显示不正确

Java 法语、西班牙语重音字符在Excel中显示不正确,java,csv,excel-2007,Java,Csv,Excel 2007,我正在尝试以不同的语言生成报告,如法语、西班牙语等。该报告正在使用MS Excel 2007查看,在Linux环境中执行时,它以英语显示OK,但不以法语或西班牙语显示 所有语言都可以在Windows Server中工作,但在Linux中运行时,我遇到了上述问题 代码是用Java编写的,我是这样开始的: String contentType = "text/csv; charset=utf-8"; // resp is HttpServletResponse resp.setChara

我正在尝试以不同的语言生成报告,如法语、西班牙语等。该报告正在使用MS Excel 2007查看,在Linux环境中执行时,它以英语显示OK,但不以法语或西班牙语显示

所有语言都可以在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());
String contentType=“text/csv;charset=utf-8”;
//resp是HttpServletResponse
分别为setCharacterEncoding(“utf-8”);
响应setHeader(“缓存控制”,“最大年龄=0,必须重新验证”);
相应的setHeader(“Pragma”、“cache”);
响应setDateHeader(“上次修改”,System.currentTimeMillis());
resp.setHeader(“内容处置”、“附件;文件名=\”Report.csv\”);
分别为setContentType(contentType);
OutputStream os=resp.getOutputStream();
写入(新字节[]{(字节)0xEF,(字节)0xBB,(字节)0xBF});

//打印(“\uFEFF.getBytes()) 您需要在对getBytes()的调用中指定字符集。通过不指定字符集,您告诉Java对运行此代码的任何平台使用默认编码。当在另一个平台上打开时,结果可能是错误的。你可以试试getBytes(“UTF-8”)…

我试过getBytes(“UTF-8”),但它也不起作用。谢谢你的建议,我很感激。