• 在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();
    

      

      

  • 相关阅读:
    Mac下配置phpredis扩展
    PHP 面向对象中常见关键字使用(final、static、const和instanceof)
    PHP null常量和null字节的区别
    PHP关于时区问题
    C++指针的操作和运算(转)
    浅谈C++中指针和引用的区别者之间的区别和用法(转)
    rails Rendering Text 用法
    MySQL“慢SQL”定位
    数组循环移位问题
    core文件问题
  • 原文地址:https://www.cnblogs.com/51net/p/3874315.html
Copyright © 2020-2023  润新知