在ASP.NET中,IE與Firefox下載檔案帶漢字名時亂碼的解決方案

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   檔案   io   for   

解決辦法:

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

  

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.