在FireFox/IE下Response中文文件名乱码问题解决方案
只是针对没有空格和IE的情况下使用Response.AppendHeader()如果想在FireFox下输出没有编码的文件,并且IE下输出的文件名中空格不为+号,就要多一次判断了,接下来将详细介绍下感兴趣的朋友可以了解下,或许对你有所帮助
发现很多园子里的人在处理Response下载文件名是使用这个方法
Response.AppendHeader("Content-Disposition", "attachment;filename=" +
HttpUtility.UrlEncode(fileInfo.Name, System.Text.Encoding.UTF8));
但这个只是针对没有空格和IE的情况下使用。
如果想在FireFox下输出没有编码的文件,并且IE下输出的文件名中空格不为+号,就要多一次判断了。
复制代码
代码如下:
if
(HttpContext.Current.Request..UserAgent.ToLower().IndexOf("msie") > -1)
{
downloadfilename
= HttpUtility.UrlPathEncode(downloadfilename);
}
if
(HttpContext.Current.Request..UserAgent.ToLower().IndexOf("firefox") > -1)
{
Response.AddHeader("Content-Disposition", "attachment;filename=\"" +
downloadfilename + "\"");
}
else
{
Response.AddHeader("Content-Disposition", "attachment;filename=" +
downloadfilename);
}
使服务器能够收集有关在客户端运行的浏览器功能的信息。下面代码为常用代码,其他具体信息参见MSDN。
HttpBrowserCapabilities b = Request.Browser;
Response.Write("浏览器名称和版本号:" + b.Type + "<br>");
Response.Write("名称:" + b.Browser + "<br>");
Response.Write("版本:" + b.Version + "<br>");
Response.Write("操作平台:" + b.Platform + "<br>");
Response.Write("是否支持框架:" + b.Frames + "<br>");
Response.Write("是否支持表格:" + b.Tables + "<br>");
Response.Write("是否支持cookies:" + b.Cookies + "<br>");
浏览器名称和版本号:IE6
名称:IE
版本:6.0
操作平台:WinXP
是否支持框架:True
是否支持表格:True
是否支持cookies:True