ASP.NET中Request.Form中文亂碼的解決方法
涉及到兩個(gè)網(wǎng)站的通信,網(wǎng)站A有一頁(yè)面a,用提交表單的方式,傳值到網(wǎng)站B的頁(yè)面b。網(wǎng)站A統(tǒng)一用UTF-8編碼,網(wǎng)站B統(tǒng)一用GB2312編碼。
web.config中編碼的設(shè)置
網(wǎng)站A:<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
網(wǎng)站B:<globalization requestEncoding="gb2312" responseEncoding="gb2312" />
解決
網(wǎng)上搜索的結(jié)果,無(wú)非都是修改 web.config 文件的requestEncoding、responseEncoding之類的,這對(duì)我來(lái)說(shuō),純屬餿主意。加之網(wǎng)絡(luò)瘋狂地復(fù)制、粘貼、未驗(yàn)證可行性等行為,一直令我發(fā)指,直接導(dǎo)致搜索結(jié)果千篇一律,找到的都是那幾篇文章,最氣憤的是其中的內(nèi)容還是錯(cuò)誤的。所以本人一直堅(jiān)持,遇到的問(wèn)題,確實(shí)驗(yàn)證了可行,才在博客貼出,以免誤人誤己。(希望沒(méi)扯得太遠(yuǎn))
那就自己動(dòng)動(dòng)腦吧,稍微梳理下,其實(shí)這個(gè)過(guò)程很簡(jiǎn)單,就是一個(gè)UTF-8的頁(yè)面發(fā)送數(shù)據(jù)到GB2312的頁(yè)面,由于編碼不同,出現(xiàn)亂碼很正常,解決方法自然是統(tǒng)一編碼。
網(wǎng)頁(yè)的編碼,一是接收請(qǐng)求數(shù)據(jù)(requestEncoding)的編碼,一是發(fā)送響應(yīng)(responseEncoding)的編碼。只要讓a頁(yè)面發(fā)送響應(yīng)的編碼,b頁(yè)面接收請(qǐng)求的編碼一致,即可解決亂碼問(wèn)題。
代碼只有一句,在a頁(yè)面Page_Load方法中加入 Response.ContentEncoding = Encoding.GetEncoding("gb2312"); 即可。
// 設(shè)置a頁(yè)面響應(yīng)編碼為gb2312,保證與b頁(yè)面接收請(qǐng)求的編碼一致
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentEncoding = Encoding.GetEncoding("gb2312");
}
可能你會(huì)有意見(jiàn),說(shuō),反過(guò)來(lái)設(shè)置b頁(yè)面接收請(qǐng)求的編碼與a頁(yè)面發(fā)送響應(yīng)的一致,行不行呢。我試過(guò)了,不行,代碼見(jiàn)下,如果你知道其中原理,煩請(qǐng)告知,不勝感激!
// 設(shè)置b頁(yè)面接收請(qǐng)求的編碼為utf-8,保證與a頁(yè)面響應(yīng)編碼一致,但行不通,為何??
protected void Page_Load(object sender, EventArgs e)
{
Request.ContentEncoding = Encoding.GetEncoding("utf-8");
}
相關(guān)文章
ASP.NET實(shí)現(xiàn)的生成驗(yàn)證碼功能示例【附demo源碼】
這篇文章主要介紹了ASP.NET實(shí)現(xiàn)的生成驗(yàn)證碼功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了asp.net生成驗(yàn)證碼的原理、步驟與相關(guān)實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-07-07asp.net?core?+?jenkins?實(shí)現(xiàn)自動(dòng)化發(fā)布功能
這篇文章主要介紹了asp.net?core?+?jenkins?實(shí)現(xiàn)自動(dòng)化發(fā)布功能,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04Asp.Net網(wǎng)站優(yōu)化系列之?dāng)?shù)據(jù)庫(kù)的優(yōu)化措施與索引優(yōu)化方法
索引的作用就類似于書(shū)的目錄,書(shū)的目錄會(huì)按照章節(jié)的順序排列,會(huì)指想某一張的位置。這樣如果在一本數(shù)百頁(yè)的書(shū)里面查找某個(gè)章節(jié)位置的時(shí)候,我們就可以只掃描書(shū)的目錄,掃描的范圍縮小了n倍,查詢的效率自然就提高了。2010-06-06Asp.NetCore3.1開(kāi)源項(xiàng)目升級(jí)為.Net6.0的方法實(shí)現(xiàn)
自從.Net6.0出來(lái)后,一直想之前開(kāi)發(fā)的項(xiàng)目升級(jí).Net6.0,本文就詳細(xì)的介紹一下如何將Asp.NetCore3.1開(kāi)源項(xiàng)目升級(jí)為.Net6.0,感興趣的小伙伴們可以參考一下2021-12-12"PageMethods未定義"或"對(duì)象不支持此屬性或方法"解決方法分享
PageMethods未定義或?qū)ο蟛恢С执藢傩曰蚍椒ń鉀Q方法,需要的朋友可以參考下。2010-12-12asp.net實(shí)現(xiàn)中英文多域名檢測(cè)的方法
這篇文章主要介紹了asp.net實(shí)現(xiàn)中英文多域名檢測(cè)的方法,涉及asp.net針對(duì)URL中域名的解析及字符串操作相關(guān)技巧,需要的朋友可以參考下2016-08-08.Net?Core?進(jìn)程守護(hù)之Supervisor使用詳解
這篇文章主要介紹了.Net?Core?進(jìn)程守護(hù)之Supervisor使用,Supervisor它可以很方便的監(jiān)聽(tīng)、啟動(dòng)、停止、重啟一個(gè)或多個(gè)進(jìn)程,對(duì).Net?Core?進(jìn)程守護(hù)之Supervisor使用相關(guān)知識(shí)感興趣的朋友一起看看吧2022-04-04