Response響應體相關的屬性

Response.Charset     ------- 顯示方式字符集
ASP.NET 中示例:
<%@ Page CodePage=936 %>

CodePage 告訴 IIS 按什麼編碼來讀取 QueryString,按什麼編碼轉換數據庫中的內容……

Response.ContentEncoding               ------ 內容編碼方式字符集

獲取或設置輸出流的 HTTP 字符集。

Response.Charset

獲取或設置輸出流的 HTTP 字符集。微軟對 ContentEncoding、Charset 的解釋是一字不差,其實可以這樣理解:ContentEncoding 是標識這個內容是什麼編碼的,而 Charset 是告訴客戶端怎麼顯示的。

我們可以做一個實驗來理解:

實驗1.

Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.Charset = "utf-8"; 
Response.Write("千一網絡");          // 響應流中寫入“字符串”
然後用瀏覽器打開網頁,可以發現是亂碼,可是用記事本查看源文件(內容編碼gb2312,我們是能夠看到的),又發現不是亂碼。這就說明了:ContentEncoding 是管(字節流到文本的),而 Charset 是管(在瀏覽器中顯示的)。

實驗2.

Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
通過 Fidller,發現 HTTP 頭中是:text/html; charset=gb2312。說明沒有指定 Charset 時,就用 ContentEncoding 的 Charset 作爲 charset。

Response.ContentType                  ------輸出對象的內容處理方式,像文本text,有xml,html處理方式

獲取或設置輸出流中 HTTP 的 MIME 類型,比如:text/xml、text/html、application/ms-word。瀏覽器根據不同的內容啓用不同的引擎,比如 IE6 及以上版本中就會自動將 XML 做成樹狀顯示。

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

這是 HTML 中的標籤,不能用在 XML、JS 等文件中,它是告訴瀏覽器網頁的 MIME、字符集。當前面的相關內容沒有指定時,瀏覽器通過此來判斷。

二.

使用流形成一個word文件例子

protected void btnResponseWord_Click(object sender, EventArgs e)
    {
        Response.Clear();       //清空無關信息
        Response.Buffer= true;     //指示是否緩衝輸出,爲true表示緩衝輸出,在Asp.net完成整個執行腳本後再發送
        Response.Charset = "GB2312";//設置輸出流的字符集-中文
  Response.AppendHeader("Content-Disposition","attachment;filename=Report.doc");//追加頭信息
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//設置輸出流的字符集
        Response.ContentType = "application/ms-word ";   //輸出流的MIME類型,設定某種擴展名的文件用一種應用程序來打開的方式類型
        Response.Write(TextBox1.Text);
        Response.End();//停止輸出
    }

Response.AppendHeader使用

@文件下載,指定默認名
Response.AddHeader(”content-type”,”application/x-msdownload”);     // 處理方式是:微軟默認的下載方式
Response.AddHeader(”Content-Disposition”,”attachment;filename=要下載的文件名.rar”);  // 處理方式disposition:下載指定附件(attachment)

說一下MIME 協議的一個擴展Content-disposition。
我們在開發Web系統時候又是會有以下需求:
  1. 希望某類或者已知MIME類型的文件,如.gif  .doc等能夠在訪問時 彈出文件下載對話框
  2.  希望以原始文件名(上傳時的文件名,例如:山東省政府1024號.doc提供下載,但服務器上保存的地址確實其他文件名如:12345_dsfs.doc)
  3.  希望某文件直接在瀏覽器顯示而不是彈出文件下載對話框

需求的解決辦法是:

Response.AddHeader("content-disposition","attachment; filename=fname.txt");

HttpContent.Current.Response.addHeader("Content-Disposition',"attachment; filename=\""+UTF_FileName(filename)+"\";");   
                                                     ------ UTF_FileName()爲了解決包含非英文/數字名稱的問題,

 attachment----作爲附件下載
 inline          -----在線打開



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章