


ASP.NET中Request.Form中文亂碼的解決方法
添加時(shí)間:2014-8-11 18:53:19
添加:
思海網(wǎng)絡(luò)
涉及到兩個(gè)網(wǎng)站的通信,網(wǎng)站A有一頁面a,用提交表單的方式,傳值到網(wǎng)站B的頁面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é)果,無非都是修改 web.config 文件的requestEncoding、responseEncoding之類的,這對(duì)我來說,純屬餿主意。加之網(wǎng)絡(luò)瘋狂地復(fù)制、粘貼、未驗(yàn)證可行性等行為,一直令我發(fā)指,直接導(dǎo)致搜索結(jié)果千篇一律,找到的都是那幾篇文章,最氣憤的是其中的內(nèi)容還是錯(cuò)誤的。所以本人一直堅(jiān)持,遇到的問題,確實(shí)驗(yàn)證了可行,才在博客貼出,以免誤人誤己。(希望沒扯得太遠(yuǎn))
那就自己動(dòng)動(dòng)腦吧,稍微梳理下,其實(shí)這個(gè)過程很簡(jiǎn)單,就是一個(gè)UTF-8的頁面發(fā)送數(shù)據(jù)到GB2312的頁面,由于編碼不同,出現(xiàn)亂碼很正常,解決方法自然是統(tǒng)一編碼。
網(wǎng)頁的編碼,一是接收請(qǐng)求數(shù)據(jù)(requestEncoding)的編碼,一是發(fā)送響應(yīng)(responseEncoding)的編碼。只要讓a頁面發(fā)送響應(yīng)的編碼,b頁面接收請(qǐng)求的編碼一致,即可解決亂碼問題。
代碼只有一句,在a頁面Page_Load方法中加入 Response.ContentEncoding = Encoding.GetEncoding("gb2312"); 即可。
// 設(shè)置a頁面響應(yīng)編碼為gb2312,保證與b頁面接收請(qǐng)求的編碼一致
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentEncoding = Encoding.GetEncoding("gb2312");
}
可能你會(huì)有意見,說,反過來設(shè)置b頁面接收請(qǐng)求的編碼與a頁面發(fā)送響應(yīng)的一致,行不行呢。我試過了,不行,代碼見下,如果你知道其中原理,煩請(qǐng)告知,不勝感激!
// 設(shè)置b頁面接收請(qǐng)求的編碼為utf-8,保證與a頁面響應(yīng)編碼一致,但行不通,為何??
protected void Page_Load(object sender, EventArgs e)
{
Request.ContentEncoding = Encoding.GetEncoding("utf-8");
}
web.config中編碼的設(shè)置
網(wǎng)站A:<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
網(wǎng)站B:<globalization requestEncoding="gb2312" responseEncoding="gb2312" />
解決
網(wǎng)上搜索的結(jié)果,無非都是修改 web.config 文件的requestEncoding、responseEncoding之類的,這對(duì)我來說,純屬餿主意。加之網(wǎng)絡(luò)瘋狂地復(fù)制、粘貼、未驗(yàn)證可行性等行為,一直令我發(fā)指,直接導(dǎo)致搜索結(jié)果千篇一律,找到的都是那幾篇文章,最氣憤的是其中的內(nèi)容還是錯(cuò)誤的。所以本人一直堅(jiān)持,遇到的問題,確實(shí)驗(yàn)證了可行,才在博客貼出,以免誤人誤己。(希望沒扯得太遠(yuǎn))
那就自己動(dòng)動(dòng)腦吧,稍微梳理下,其實(shí)這個(gè)過程很簡(jiǎn)單,就是一個(gè)UTF-8的頁面發(fā)送數(shù)據(jù)到GB2312的頁面,由于編碼不同,出現(xiàn)亂碼很正常,解決方法自然是統(tǒng)一編碼。
網(wǎng)頁的編碼,一是接收請(qǐng)求數(shù)據(jù)(requestEncoding)的編碼,一是發(fā)送響應(yīng)(responseEncoding)的編碼。只要讓a頁面發(fā)送響應(yīng)的編碼,b頁面接收請(qǐng)求的編碼一致,即可解決亂碼問題。
代碼只有一句,在a頁面Page_Load方法中加入 Response.ContentEncoding = Encoding.GetEncoding("gb2312"); 即可。
復(fù)制代碼 代碼如下:
// 設(shè)置a頁面響應(yīng)編碼為gb2312,保證與b頁面接收請(qǐng)求的編碼一致
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentEncoding = Encoding.GetEncoding("gb2312");
}
可能你會(huì)有意見,說,反過來設(shè)置b頁面接收請(qǐng)求的編碼與a頁面發(fā)送響應(yīng)的一致,行不行呢。我試過了,不行,代碼見下,如果你知道其中原理,煩請(qǐng)告知,不勝感激!
復(fù)制代碼 代碼如下:
// 設(shè)置b頁面接收請(qǐng)求的編碼為utf-8,保證與a頁面響應(yīng)編碼一致,但行不通,為何??
protected void Page_Load(object sender, EventArgs e)
{
Request.ContentEncoding = Encoding.GetEncoding("utf-8");
}
關(guān)鍵字:ASP.NET、網(wǎng)站、編碼
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解