中文文件可以下载,但是文件名不对,有乱码。

appow 2003-05-15 04:58:54
String filename="例子.doc";
ServletOutputStream os = response.getOutputStream();
byte[] buffer = new byte[16 * 1024];
int readSize = 0;
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");
java.io.FileInputStream fileInputStream = new java.io.FileInputStream("d:/"+filename);
try {
while ((readSize = is.read(buffer))!=-1) {
os.write(buffer, 0, readSize);
}
response.flushBuffer();
} catch (Exception e) {
System.err.println(e.toString());
}

...全文
608 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qljsd 2003-05-30
  • 打赏
  • 举报
回复
把你的IE properties中的“始终用UTF-8方式传输”选项不选
appow 2003-05-30
  • 打赏
  • 举报
回复
按照楼上的去编码,还是只能显示2个汉字,其它全不能显示了
SureBeiJing 2003-05-23
  • 打赏
  • 举报
回复
String filename="例子.doc";
ServletOutputStream os = response.getOutputStream();
byte[] buffer = new byte[16 * 1024];
int readSize = 0;
// ##########################################
//在这里做了修改,加入 charset=gb2312
response.setContentType("APPLICATION/OCTET-STREAM; charset=gb2312");
// ##########################################

response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");
java.io.FileInputStream fileInputStream = new java.io.FileInputStream("d:/"+filename);
try {
while ((readSize = is.read(buffer))!=-1) {
os.write(buffer, 0, readSize);
}
response.flushBuffer();
} catch (Exception e) {
System.err.println(e.toString());
}

eternalee 2003-05-23
  • 打赏
  • 举报
回复

res.setHeader("Content-Language","zh-CN");
req.setCharacterEncoding("GBK");
appow 2003-05-22
  • 打赏
  • 举报
回复
filename = new String(filename.getBytes("iso8859-1"),"GBK"); //试了,根本不好用

filename = new String(filename.getBytes("8859_1"));//当只有2个或少于2个汉字时,好用,大于2个汉字时全为乱码!!!
appow 2003-05-21
  • 打赏
  • 举报
回复
时间戳做中文文件名是怎么个思路,能否介绍一下?

没有用apache,只用tomcat3.3
Philzzf 2003-05-20
  • 打赏
  • 举报
回复
你是不是用了APACHE和tomcat整合?
csdn_search 2003-05-20
  • 打赏
  • 举报
回复
我是用时间戳做中文文件名问题的,不知道楼主需要否?mhw1978625@163.com
eternalee 2003-05-18
  • 打赏
  • 举报
回复
filename = new String(filename.getBytes("iso8859-1"),"GBK");
Hodex 2003-05-18
  • 打赏
  • 举报
回复
filename = new String(filename.getBytes("8859_1"));
appow 2003-05-17
  • 打赏
  • 举报
回复
相应的改成了:
response.setHeader("Content-Disposition", "attachment; filename="+new String(filename.getBytes(),"iso8859-1"));

但是只有第一个汉字能正常显示,其它都是乱码!!!!!!!
AllError 2003-05-16
  • 打赏
  • 举报
回复
实在不行,参考
http://expert.csdn.net/Expert/topic/1600/1600002.xml?temp=.1651728
dongdongshu 2003-05-16
  • 打赏
  • 举报
回复
对文件名进行编码转换~~~!
moumouren 2003-05-16
  • 打赏
  • 举报
回复
response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");
--->
response.setHeader("Content-Disposition", "attachment; filename="+new String(filename.getBytes(),"iso8859-1"));
AllError 2003-05-16
  • 打赏
  • 举报
回复
response.reset();
//response.setContentType("APPLICATION/OCTET-STREAM");
response.setContentType("bin");
response.setHeader("Content-Disposition",
"attachment; filename=\"" + filename + "\"");
System.out.println("response");

// 打开指定文件的流信息
java.io.FileInputStream fileInputStream =
new java.io.FileInputStream(filepath + filedir+ "\\" + filename);

// 写出流信息
int i;
while ((i=fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧