Asp.net中Response.Charset與Response.ContentEncoding區別樣本分析_實用技巧

來源:互聯網
上載者:User

本文以樣本形式分析了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 = 0Response.ExpiresAbsolute = Now() - 1Response.Addheader "pragma","no-cache"Response.Addheader "cache-control","private"Response.CacheControl = "no-cache

希望本文所述的Asp.net中Response.Charset與Response.ContentEncoding的區別及相關用法對大家Asp.net程式設計有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.