protected void Page_Load(object sender, EventArgs e)
        {
            string strurl = Request.Params.Get("fileName").ToString();
            if (strurl != "")
            {
                string strFileName = Server.UrlDecode(strurl).Substring(Server.UrlDecode(strurl).LastIndexOf('/') + 1);
                strFileName = cutBadStr(strFileName);
                Response.Clear();
                Response.ContentType = "application/x-zip-compressed";
                Response.Charset = "gb2312";
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
                string filename = Server.UrlDecode(strurl).Replace('/', '\\');
                //Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8));
                Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlPathEncode(strFileName));
                Response.TransmitFile(filename);
                Response.Flush();
                Response.End();
            }
            //else
            //{
            //    Response.Write("<script>alert('指定的文件不存在或者已被移除!');</script>");
            //}        }
这是我下载文件的方法,用IE下载没问题,但是用迅雷下载的时候文件名会变成被编码后的文件名(%u5458%u5DE5%u57F9%u8BAD%u5B66%u4E60%u7535%u5B50%u6559%u67501-%u8BF7%u7ED9%u6211%u7ED3%u679C.doc),有哪位大虾知道是咋回事啊?

解决方案 »

  1.   

    编码由GB2312 改为 unicode
      

  2.   

     Response.Charset = "gb2312";
    to
     Response.Charset = "UTF-8";
      

  3.   

    换了,还是不行呢~UTF8也没用
      

  4.   

    Response.Charset = "UTF-8";不行的话再换,其他格式都试下。
      

  5.   

    迅雷不行哦。
    添加Download.aspx页
    FileStream f= new FileStream("", FileMode.Open);  
    byte[] buffer = new byte[f.Length];  
    f.Read(buffer, 0, buffer.Length);  
    f.Close();  
    Response.ContentType = "application/octet-stream";  
    Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("", System.Text.Encoding.UTF8));  
    Response.BinaryWrite(buffer);  
    Response.Flush();  
    Response.End();参考
      

  6.   

    HttpUtility.UrlEncode("", System.Text.Encoding.UTF8)); 此处最关键