日期:2014-05-17  浏览次数:20585 次

下载中文名的文件文件名乱码问题,崩溃了,求救
昨天在网上看了些文件下载的例子,发现中文文件名是乱码,然后又在网上搜啊搜,可是都解决不了,于是发帖求救
1、RequestDispatcher dispatcher = application.getRequestDispatcher(filenamedownload);
2、output = response.getOutputStream();
  fis = new FileInputStream(filenamedownload);流读写
3、SmartUpload.downloadFile()
上面三个方法都出现乱码,前面两个是编码问题,要怎么转换?转成哪种编码?我搜的都不对
SmartUpload,网上说要改原代码,字符编码转换的,我也改了还是不对,我晕了
各路大侠帮帮忙啊

------解决方案--------------------
Java code
response.setContentType("text/xml;charset=UTF-8");
        response.setHeader("Cache-Control", "no-cache");

------解决方案--------------------
这个东西处理起来是比较复杂的。有可能真要修改源码。毕竟你是用的编辑器?
------解决方案--------------------
你使用组件的话可能需要修改组件里有段对流处理和文件名字输出的代码部分,一般使用URLEncoder.encode(filename,"UTF-8")来设置需要下载的文件名。
如果我这个可用可以试下我这个。
http://topic.csdn.net/u/20100617/21/a6dccfb2-b793-4f24-a239-9acd65f1e2d7.html
只用我的下载部分就可以。
------解决方案--------------------
Java code

response.reset();
response.setContentType("application/x-download");
response.addHeader("Content-Disposition", "attachment;filename="
    + new String(filenamedisplay.getBytes("utf-8"), "ISO8859-1"));
//filenamedisplay文件名

------解决方案--------------------
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition","attachment; filename="+URLEncoder.encode(titlename, "UTF-8")+".xls");
------解决方案--------------------
伙计,第一你要确定你用的是什么编码,第二编码总共也就那么几个地方可以设置。设置的方法也就这么几种。你自己找下,界面,类,tomcat。来来去去也就这么几个地方。
------解决方案--------------------
厄~~~smartupload已经很久没有人维护了,有不少bug,我记得当时还改过一个它不支持小于4K的小文件上传的

我建议楼主debug它的源代码,很可能是smartupload自己的问题
------解决方案--------------------
你是根据中文找不到文件,还是下载到client文件名是乱码?

试试http head里面放文件名。
------解决方案--------------------
楼主,我的中文附件名是这样的,要不你试试看
Java code

String fileName = new String("测试中文".getBytes("GBK"), "iso8859-1"); // 为了防止中文文件名乱码 ,必须要new String
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);

------解决方案--------------------
我觉得你可能从JSP页面传过去的时候就已经是乱码了,试着把文件名打印出来看看是否是乱码,若不是乱码,应该是可以的,一个上传功能用不着修改什么源码。
jsp页面加<%@ page language="java" contentType="text/html; charset=UTF-8"%>
一般没有问题.
------解决方案--------------------
问题还是自己找的好,别人并不清除你的环境,建议你从几个方面来检查字符集

主要是接个接口间的
1、浏览器与你工程的中间的转换,这里字符集不同也会有影响
2、工程中配置文件的字符集
3、tomcat和工程间的转换
------解决方案--------------------
将"水调歌头.doc"进行编码或者使用英文
------解决方案--------------------
将 response.setHeader("Content-Disposition", "attachment; filename=" + filenamedisplay);
中的filenamedisplay 转换能iso8859-1的编码

filenamedisplay =new String(filenamedisplay.getBytes() ,'iso8859-1')
------解决方案--------------------
一般都用英文的吧。