本文以示例形式分析了Asp.net中Response.Charset與Response.ContentEncoding的區別,分享給大家供大家參考。具體如下:
1.Response.Charset
ASP.NET 中示例:
<%@ Page CodePage=936 %>
CodePage 告訴 IIS 按什麼編碼來讀取 QueryString,按什麼編碼轉換數據庫中的內容……
2.Response.ContentEncoding
獲取或設置輸出流的 HTTP 字符集。
Response.Charset
獲取或設置輸出流的 HTTP 字符集。微軟對 ContentEncoding、Charset 的解釋是一字不差,其實可以這樣理解:ContentEncoding 是標識這個內容是什麼編碼的,而 Charset 是告訴客戶端怎麼顯示的。
我們可以做一個示例來理解:
示例1.
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.Charset = "utf-8"; Response.Write("");
然後用浏覽器打開網頁,可以發現是亂碼,可是用記事本查看源文件,又發現不是亂碼。這就說明了:ContentEncoding 是管字節流到文本的,而 Charset 是管在浏覽器中顯示的。
示例2.
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
通過 Fidller,發現 HTTP 頭中是:text/html; charset=gb2312。說明沒有指定 Charset 時,就用 ContentEncoding 的 Charset 作為 charset。
示例3.
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.Charset = "123-8";
HTTP 頭中是:text/html; charset=123-8。網頁顯示正常,說明如果 charset 錯誤,仍然以 ContentEncoding 的 Charset 作為 charset。
示例4.
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.Charset = "";
HTTP 頭中是:text/html;。HTTP 頭中沒有 charset,網頁顯示正常,說明 HTTP 頭中沒有 charset,仍然以 ContentEncoding 的 Charset 作為 charset。
補充:
一.Response.ContentType
獲取或設置輸出流中 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; //完成整個響應後再發送 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");
@刷新頁面
Response.AddHeader "REFRESH", "60;URL=newpath/newpage.asp"
這等同於客戶機端<META>元素:
<META HTTP-EQUIV="REFRESH", "60;URL=newpath/newpage.asp"
@頁面轉向
Response.Status = "302 Object Moved" Response.Addheader "Location", "newpath/newpage.asp"
這等同於使用Response.Redirect方法:
Response.Redirect "newpath/newpage.asp"
@強制浏覽器顯示一個用戶名/口令對話框
Response.Status= "401 Unauthorized" Response.Addheader "WWW-Authenticate", "BASIC"
強制浏覽器顯示一個用戶名/口令對話框,然後使用BASIC驗證把它們發送回服務器(將在本書後續部分看到驗證方法)。
@如何讓網頁不緩沖
Response.Expires = 0 Response.ExpiresAbsolute = Now() - 1 Response.Addheader "pragma","no-cache" Response.Addheader "cache-control","private" Response.CacheControl = "no-cache
希望本文所述的Asp.net中Response.Charset與Response.ContentEncoding的區別及相關用法對大家Asp.net程序設計有所幫助。