Asp.Net匯出檔名中文亂碼
阿新 • • 發佈:2018-12-20
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; }
判斷不同的瀏覽器,然後編碼