日期:2014-05-18  浏览次数:20533 次

附件下载,中文文件名乱码如何解决???
我写了个程序,里面有文件要作为附件下载,英文文件名都正常,但中文文件名就会乱码,不知道如何解决,望高手指点。

代码如下:
=============================
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();


------解决方案--------------------
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();
------解决方案--------------------
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());
------解决方案--------------------
这样写就OK了
Response.AddHeader( "Content-Disposition ", "attachment;filename= " + HttpUtility.UrlEncode(测试.xls));

------解决方案--------------------
再给你回复一次,我faint

string 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();