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

解决方案 »

  1.   

    response.setContentType("text/xml;charset=UTF-8");
    response.setHeader("Cache-Control", "no-cache");
    对服务器进行解码
      

  2.   

    response.setHeader("Content-Disposition", "attachment; filename=" + filenamedisplay);  
    例子是这样的 改成楼上的?
      

  3.   

    response.setContentType("text/xml;charset=UTF-8");那就放这个就行啦
      

  4.   

    例子是这样的
    response.setContentType("application/x-download");
    能否详细点
      

  5.   

    response.setContentType("application/x-download;charset=UTF-8");
      

  6.   

    你使用组件的话可能需要修改组件里有段对流处理和文件名字输出的代码部分,一般使用URLEncoder.encode(filename,"UTF-8")来设置需要下载的文件名。
    如果我这个可用可以试下我这个。
    http://topic.csdn.net/u/20100617/21/a6dccfb2-b793-4f24-a239-9acd65f1e2d7.html
    只用我的下载部分就可以。
      

  7.   

    URLEncoder.encode(filenamedisplay,"UTF-8");
    我用了 不行
      

  8.   


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

  9.   

    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-disposition","attachment; filename="+URLEncoder.encode(titlename, "UTF-8")+".xls");
      

  10.   

    伙计,第一你要确定你用的是什么编码,第二编码总共也就那么几个地方可以设置。设置的方法也就这么几种。你自己找下,界面,类,tomcat。来来去去也就这么几个地方。
      

  11.   


    <%@page language="java" import="java.net.*" pageEncoding="UTF-8"%>
    <%
        response.setContentType("application/x-download");
        String filenamedownload = "/download/水调歌头.doc";
         String filenamedisplay = "下载(水调歌头).doc";
        filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
        response.setHeader("Content-Disposition", "attachment; filename=" + filenamedisplay);      try
        {    
            RequestDispatcher dispatcher = application.getRequestDispatcher(filenamedownload);
            if(dispatcher != null)
            {
                dispatcher.forward(request,response);
            }
            response.flushBuffer();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
        
        }
        out.clear();
        out = pageContext.pushBody();
    %>我的是这样的 怎么改
      

  12.   

    厄~~~smartupload已经很久没有人维护了,有不少bug,我记得当时还改过一个它不支持小于4K的小文件上传的我建议楼主debug它的源代码,很可能是smartupload自己的问题
      

  13.   

    你是根据中文找不到文件,还是下载到client文件名是乱码?试试http head里面放文件名。
      

  14.   

    楼主,我的中文附件名是这样的,要不你试试看String fileName = new String("测试中文".getBytes("GBK"), "iso8859-1"); // 为了防止中文文件名乱码 ,必须要new String
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-disposition", "attachment;filename=" + fileName);
      

  15.   

    忘记说了,我的那个是excel文件所以用的是response.setContentType("application/vnd.ms-excel");
      

  16.   

    下载到client文件名是乱码 我试试楼上的
      

  17.   

    我觉得你可能从JSP页面传过去的时候就已经是乱码了,试着把文件名打印出来看看是否是乱码,若不是乱码,应该是可以的,一个上传功能用不着修改什么源码。
    jsp页面加<%@ page language="java" contentType="text/html; charset=UTF-8"%>
    一般没有问题.
      

  18.   

    问题还是自己找的好,别人并不清除你的环境,建议你从几个方面来检查字符集主要是接个接口间的
    1、浏览器与你工程的中间的转换,这里字符集不同也会有影响
    2、工程中配置文件的字符集
    3、tomcat和工程间的转换
      

  19.   

    将"水调歌头.doc"进行编码或者使用英文
      

  20.   

    将 response.setHeader("Content-Disposition", "attachment; filename=" + filenamedisplay);   
    中的filenamedisplay 转换能iso8859-1的编码filenamedisplay =new String(filenamedisplay.getBytes() ,'iso8859-1')
      

  21.   

    第三个 su.downloadFile("path","",URLEncoder.encode("你想要的文件名", "UTF-8"));