JSP/SSH实现生成csv文件下载,生成的csv如何转换为ANSI编码?
环境如下,eclipse,工程的编码设置为utf-8。
现在的实现是先生成utf-8编码的csv文件,然后供下载。
问题是,客户需要这个csv文件是ANSI编码的?我该在服务器端如何改代码?
生成csv文件内容的部分代码如下
try {
byte[] bom = new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF };
FileWriter writer = new FileWriter(csvFile, false);
String str = new String(bom) + buildCsvLines();
writer.write(str);
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我的用的是struts的DownloadAction做的下载请求处理。核心部分如下:
protected StreamInfo getStreamInfo(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
csvService.exportPurchaseOrders(target);// 这里生成临时csv文件以提供下载
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment;filename="
+ relative);
File file = new File(target);
StreamInfo si = new FileStreamInfo("application/vnd.ms-excel;", file);
return si;
}
现在的临时办法是下载了csv文件后,用记事本打开,然后点击另存为,会看到编码方式是utf-8,然后选择ANSI,点击保存。就成了ANSI编码的了。用excel打开也能正常显示中文。
请教我如何把通过记事本另存为ANSI的方式在程序里实现?该在哪里改?
我试过new String(str.getBytes("utf-8"), "gb2312")的方式转换utf-8的字符串为gb2312的编码,但生成的文件里全是乱码,无法正常显示中文。
高人指教