在ASP.NET中,IE与Firefox下载文件带汉字名时乱码的解决方法

解决办法:

HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
HttpContext.Current.Response.Charset = "gb2312";
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", string.IsNullOrEmpty(fileName) ? DateTime.Now.ToString("yyyyMMddHHmmssfff") : System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)));
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
HttpContext.Current.Response.End();

不过上述方法在firefox上还是乱码

 

终极解决办法:

                Encoding encoding;
                string outputFileName = null;
                string browser = HttpContext.Current.Request.UserAgent.ToUpper();
                if (browser.Contains("MS") == true && browser.Contains("IE") == true)
                {
                    outputFileName = HttpUtility.UrlEncode(fileName);
                    encoding = System.Text.Encoding.Default;
                }
                else if (browser.Contains("FIREFOX") == true)
                {
                    outputFileName = fileName;
                    encoding = System.Text.Encoding.GetEncoding("GB2312");
                }
                else
                {
                    outputFileName = HttpUtility.UrlEncode(fileName);
                    encoding = System.Text.Encoding.Default;
                }
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.Buffer = true;
                HttpContext.Current.Response.ContentEncoding = encoding;
                HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", string.IsNullOrEmpty(outputFileName) ? DateTime.Now.ToString("yyyyMMddHHmmssfff") : outputFileName));
                HttpContext.Current.Response.BinaryWrite(ms.ToArray());
                HttpContext.Current.Response.End();

  

  

时间: 2024-09-19 02:26:05

在ASP.NET中,IE与Firefox下载文件带汉字名时乱码的解决方法的相关文章

ASP.NET中通过对话框方式下载文件

ASP.NET中通过对话框方式下载文件 1 通过探出对话框提示文件下载或打开 2 通过自定义Header让特定的应用程序打开文件  使用的方法:Response.TransmitFile()  例程: Response.ContentType = "image/jpeg";Response.AppendHeader("Content-Disposition","attachment; filename=SailBig.jpg");Response

win7 64位系统中下载文件到u盘时卡住如何解决

  原因分析:如果下载比较大的文件,就很有可能会遇到这样的问题,因为大文件被下载到U盘之前,系统会检测U盘空间,而且会持续很长时间,另外,U盘的写入速度如果不理想,也非常有可能产生这种问题. 一.如果仅仅只是卡的话,具体方法如下: 1.首先将下载的文件先放在本地磁盘,然后压缩成小文件包,然后再放到U盘中. 2.重新换一个写入速度比较快的U盘. 二.如果是卡死的话,可以根据下面的方法进行排查: 1.检查一下U盘是不是已经满了,有时候U盘要满了,但是系统可能出错不会提示,就只会卡死,所以建议大家在下

Java中URL传中文时乱码的解决方法_java

前言 Java中URL传中文时乱码的问题相信不少朋友都遇到过,最近就遇到一个问题,就是在Action当中把一条中文信息绑定在URL的后面,ActionForward到别一个页面时,用reqeust.getParameter取出是出现乱码的问题. 解决办法 1.对要进行URL传递的中文字符进行编码: String message = java.net.URLEncoder.encode("中文字符","utf-8"); 2.在取URL传递中文的页面对字符进行解码: S

ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法_jquery

如图: 上图的右边框不见了,使用 web开发工具调试,发现是内容器过大.于是想到了是jquery-easyui 对界面的"渲染"不正确引起. 起初以为是因为加了 处理重复的代码引起,但是去掉后总是依旧: 进而考虑到界面"渲染"的前后关系,于是尝试对代码片段进行延迟执行,问题解决.原问题脚本: 复制代码 代码如下: <script type="text/javascript"> if (window.__yltlClientScriptRegistKey == undefin

在asp.net中如何上传大文件

在asp.net中如何上传大文件呢?我们需要配置Web.config文件.具体如下: 在web.config中的<system.web></system.web>内加入如下代码: <httpRuntime executi maxRequestLength="951200" useFullyQualifiedRedirectUrl="true" minFreeThreads="8" minLocalRequestFre

asp.net中在div层上多次点击时div层会出现阴影

问题描述 asp.net中在div层上多次点击时div层会出现阴影 asp.net中在div层上多次点击时div层会出现阴影,怎样使div层点击时不出现阴影 解决方案 代码呢?点击层没有阴影的,是不是你自己增加了js给层添加过样式,不行层添加onselectstart事件return false阻止选择

怎么用asp.net来上传和下载文件啊

问题描述 怎么用怎么用asp.net来上传和下载文件啊 解决方案 解决方案二:找本asp.net入门书看看.上传文件大概需要3.4行代码.而下载文件只要2.3行代码就够了.解决方案三:<form><inputtype="file"name="file"id="file"><inputtype="submit"value="submit"></form>后台用r

PHP附件下载中文名称乱码的解决方法_php技巧

本文实例讲述了PHP附件下载中文名称乱码的解决方法.分享给大家供大家参考,具体如下: PHP中,如果要下载的文件名称为中文,则会出现文件标题乱码. 此时就需要对标题进行编码,也就是说先进性urlencode,然后再放入header,然后问题就解决了. $filename = urlencode("下载文档"); header ( "Content-disposition: attachment; filename=$filename.xls" ); 网上说,在RFC

JQuery的Ajax中Post方法传递中文出现乱码的解决方法_jquery

本文实例讲述了JQuery中Post传递中文出现的解决方法,即乱码ajax与jquery.ajax中文参数post传递乱码处理方法.分享给大家供大家参考.具体分析如下: 问题一: 今天在做项目时,需要用到Ajax,之前我在用GET方式传递中文参数时,只需要在后台程序中设置页面编码为GB2312即中文能正常显示,可是这次由于表单项目较多,不适合用GET方式传递,只能用POST方式,但发现后台程序中设置编码为GB2312时中文还是显示的乱码.经过一番研究问题才最终得到解决. 解决方法: 解决此问题的