我写了个程序,里面有文件要作为附件下载,英文文件名都正常,但中文文件名就会乱码,不知道如何解决,望高手指点。代码如下:
=============================
Response.Clear();
Response.BufferOutput=true;
Response.Charset="utf-8";//此处用“GB2312”也不行
Response.AppendHeader("Content-Disposition","attachment;filename=测试.xls");
Response.ContentType = "application/vnd.ms-excel";
FileInfo mf=new FileInfo(sFile);
FileStream fs=mf.OpenRead();
Response.WriteFile(fs.Handle,0,mf.Length);
fs.Close();

解决方案 »

  1.   

    System.IO.FileInfo file = new System.IO.FileInfo(path);
                    Response.Clear();
                    Response.Charset = "GB2312";
                    Response.ContentEncoding = System.Text.Encoding.UTF8;
                    // 添加头信息,为"文件下载/另存为"对话框指定默认文件名
                    Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name));
                    // 添加头信息,指定文件大小,让浏览器能够显示下载进度
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    Response.ContentType = "application/octet-stream";
                    // 把文件流发送到客户端
                    Response.WriteFile(file.FullName);
                    // 停止页面的执行
                    Response.End();
      

  2.   

    Response.ContentType = "application/octet-stream";
                    Response.AppendHeader("Content-Disposition", "attachment;filename="
                         + HttpUtility.UrlEncode(DownloadFile.Name, System.Text.Encoding.UTF8));                Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
      

  3.   

    这样写就OK了
    Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(测试.xls));
      

  4.   

    再给你回复一次,我faintstring pathfile = @"F:\新建文件夹\1.txt";  //pathfile 是要下载的文件名称 
            System.IO.FileInfo file = new System.IO.FileInfo(pathfile);
            Response.Clear();
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name));
            Response.AddHeader("Content-Length", file.Length.ToString());
            Response.ContentType = "application/octet-stream";
            Response.WriteFile(file.FullName);
            Response.End();