天天看點

asp.net程式設計:asp.net中如何設定頁面的編碼

在用ASP.NET寫網上支付的接口程式時,遇到一個奇怪問題,通過表單送出過去的中文全是亂碼,英文正常。而用asp程式進行測試,可以正常送出 中 文,asp頁面中有這樣的HTML代碼: 

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

可是将這個代碼加入到ASP.NET頁面中,依然解決不了問 題。分析了一下,問題應該是編碼引起的,對方的程式隻能處理GB2312編碼的頁面送出過來的中文資料。難道加了上面的代碼,ASP.NET卻不是以 GB2312編碼顯示的?打開該頁面,檢視一下浏覽器的編碼,原來是UTF-8,原因找到,怎麼解決呢?看來,ASP.NET不理睬上面的代碼,自己向浏覽器發送編碼資訊,那我設定一下Response.ContentEncoding試試,在Page_Load中加上如下代碼: 

Response.ContentEncoding = System.Text.Encoding.GetEncoding( " GB2312 " ); 

OK!問題解決!

如果要為整個項目設定頁面編碼,那麼就可以在 Web.config 檔案中添加一個 Globalization 屬性,然後設定它的 fileEncoding、requestEncoding,和 responseEncoding 特性: 

<configuration> 

<system.web> 

<globalization 

fileEncoding="utf-8" 

requestEncoding="utf-8" 

responseEncoding="utf-8" 

culture="en-US" 

uiCulture="de-DE" 

/> 

</system.web> 

</configuration> 

如果要為單獨的頁面設定編碼,那麼 就可以設定 @ Page 指令的 RequestEncoding 和 ResponseEncoding 特性: 

<%@ Page RequestEncoding="utf-8" ResponseEncoding="utf-8" %> 

有時我們已經在配置 檔案中将整個站點的編碼設定為gb2312,但某個頁面卻需要使用utf-8,這時我們可以在配置檔案configuration節下新增 location節點: 

程式代碼 

<location path="Test.aspx"> 

<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="en"/> 

</location> 

如果是要将某個頁面單獨設定為gb2312則為: 

程式代碼<location path="Test.aspx"> 

<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN"/> 

</location>

繼續閱讀