Servlet自动文件下载中文文件名乱码问题,怎样解决
代码如下
//文件名为英文时没有问题,文件名为中文时,下载文件名显示为乱码
public class DBExcelWriter extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("application/vnd.ms-excel;charset=gb2312");
response.setHeader("Content-disposition","attachment;filename=中文文件名.xls");
OutputStream os = response.getOutputStream();
WriteExcelToStream(os);//将Excel写入OutputStream
}
}
问题点数:100、回复次数:4Top
1 楼su27007(人外有人,天外有天)回复于 2005-04-22 14:42:58 得分 100
兄弟,中文文件名是要转码才行的!
String filename=new String(sourceFileName.getBytes("Big5"),"8859_1");Top
2 楼bitou(大鹏一日同风起,扶摇直上九万里)回复于 2005-04-22 15:18:06 得分 0
难道你保存在服务器上的文件是以中文命名的?Top
3 楼rinco(天才白痴)回复于 2005-04-22 15:26:37 得分 0
谢谢su27007,可以了
to bitou 服务器上没有文件,是直接写流到客户端,本类是一个报表转Excel文件的Servlet,客户端在保存/打开对话框中看到的文件名是一个中文文件名,也就是报表名.
public class DBExcelWriter extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
String fileName = new String("中文文件名.xls".getBytes("GBK"),"iso-8859-1");
response.setContentType("application/x-octetstream;charset=gb2312");
//response.setHeader("Content-disposition","attachment;filename=" + URLEncoder.encode(fileName,"GBK") + "");
response.setHeader("Content-disposition","attachment;filename=" + fileName + "");
OutputStream os = response.getOutputStream();
os.write(fileName.getBytes());
os.flush();
os.close();
}
}
Top
4 楼rinco(天才白痴)回复于 2005-04-22 15:29:39 得分 0
该贴已经结帖,但结帖时出了错,SorryTop




