HttpContext.Current.Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode("文件名",System.Text.Encoding.UTF8));这是我要输出的文件的文件名.<globalization 
            requestEncoding="gb2312" 
            responseEncoding="gb2312" 
   />
这是web.config的配置信息可是我输出的时候.中文是乱码..不知道应该怎么处理.谢谢

解决方案 »

  1.   

    ===================
     针对文件名
    Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(name));针对文件内容
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");出现问题了,可能 是应为 你 在URL 中 传递了 中文name。   如果这样的话,传递的时候,也要 编码: Server.UrlEncode
    <a href='<%#"downfile.aspx?name="+Server.UrlEncode(DataBinder.Eval(Container.DataItem,"filename").ToString())+"&path="+DataBinder.Eval(Container.DataItem,"filepath")%>' >
      

  2.   

    谢谢.我在URL中.没有传递中文 别外..  Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(name)); 这句还是乱码..不知道有为什么?
      

  3.   

    在附件下载那里,我是用redirect(文件名)来解决这个问题的.
    之前也遇到LZ的类似问题,现在还是没有解决.
      

  4.   

    相信这篇文章会对你有很大的帮助.
    StreamReader reader = new StreamReader(FileName, System.Text.Encoding.Default)
      

  5.   

    System.Text.Encoding.Default用了这个参数.还 是不行. 0 0| 
    谢谢
      

  6.   

      那就 没有办法了。我把我的下载 代码 贴出来 ,没有问题。你参考一下;
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(Request.QueryString["name"]!=null && Request.QueryString["path"]!=null)
    {
    downloadfile(Request.QueryString["name"].ToString(),Request.QueryString["path"].ToString());
    }
    }
    ==
    private void downloadfile(string name,string path)
    {


    /*WriteFile实现下载*/ FileInfo fileInfo = new FileInfo(Server.MapPath(path));
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(name));
    Response.AddHeader("Content-Length", fileInfo.Length.ToString());
    Response.AddHeader("Content-Transfer-Encoding", "binary");
    Response.ContentType = "application/octet-stream";
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
    Response.WriteFile(fileInfo.FullName);
    Response.Flush();
    Response.End();

        /* 第二种方法,批量下载
    System.IO.Stream iStream = null;
    byte[] buffer = new Byte[10000];
    int length;
    long dataToRead;
    string filepath  = Server.MapPath(path);
    string  filename  = System.IO.Path.GetFileName(filepath);
    try
    {
    iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, 
    System.IO.FileAccess.Read,System.IO.FileShare.Read); dataToRead = iStream.Length;
    Response.ContentType = "application/octet-stream";
    Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename)); while (dataToRead > 0)
    {
    if (Response.IsClientConnected) 
    {
    length = iStream.Read(buffer, 0, 10000); //每次读取 10K
    Response.OutputStream.Write(buffer, 0, length);
    Response.Flush(); buffer= new Byte[10000];
    dataToRead = dataToRead - length;
    }
    else
    {
    dataToRead = -1;
    }
    }
    }
    catch (Exception ex) 
    {
    Response.Write("Error : " + ex.Message);
    }
    finally
    {
    if (iStream != null) 
    {
    iStream.Close();
    }
    }
      */ }
      

  7.   


    上面 是下载 附件的方法,
     另外一种 下载为 excel 的方法<HEAD>
    <%Response.AddHeader("Content-Disposition", "attachment; filename="+HttpUtility.UrlEncode("订单MIS.xls"));%>
    <%Response.ContentType="application/vnd.ms-excel";%>
    <%Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");%>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="ProgId" content="Excel.Sheet">
    <meta name="Generator" content="Microsoft Excel 11">
    <link rel="File-List" href="Book1.files/filelist.xml">
    <link rel="Edit-Time-Data" href="Book1.files/editdata.mso">
               ...................................
      

  8.   

    不知道楼上的web.config里是怎么配置的 ? 和这有关系吗