1. 程式人生 > >Asp.Net匯出檔名中文亂碼

Asp.Net匯出檔名中文亂碼

Asp.Net匯出word為例,Excel等其他檔案也一樣

protected void Page_Load(object sender, EventArgs e)
    {string html = “網頁html程式碼”;
        string fileName = "故事.doc";
        DownloadDoc(fileName,html);
    }
    public void DownloadDoc(string fileName, string pageHtml)
    {
        //設定Http的頭資訊,編碼格式  
        HttpContext.Current.Response.Buffer = true
; HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Charset = "gb2312"; HttpContext.Current.Response.ClearContent(); HttpContext.Current.Response.ClearHeaders(); Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); HttpContext.Current.Response.ContentType
= "application/ms-word"; HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + clFielName(fileName)); //關閉控制元件的檢視狀態 ,如果仍然為true,RenderControl將啟用頁的跟蹤功能,儲存與控制元件有關的跟蹤資訊 this.EnableViewState = false; HttpContext.Current.Response.Write(pageHtml); HttpContext.Current.Response.End(); }
public string clFielName(string fileName) { System.Web.HttpContext curContext = System.Web.HttpContext.Current; string outputFileName = null; string browser = curContext.Request.UserAgent.ToUpper(); if (browser.Contains("MS") == true && browser.Contains("IE") == true) { outputFileName = System.Web.HttpUtility.UrlEncode(fileName); } else if (browser.Contains("FIREFOX") == true) { outputFileName = "\"" + fileName + "\""; } else { outputFileName = System.Web.HttpUtility.UrlEncode(fileName); } return outputFileName; }

判斷不同的瀏覽器,然後編碼