背景
涉及到兩個網站的通訊,網站A有一頁面a,用提交表單的方式,傳值到網站B的頁面b。網站A統一用UTF-8編碼,網站B統一用GB2312編碼。
web.config中編碼的設置
網站A:<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
網站B:<globalization requestEncoding="gb2312" responseEncoding="gb2312" />
解決
網上搜索的結果,無非都是修改 web.config 文件的requestEncoding、responseEncoding之類的,這對我來講,純屬餿主意。加之網絡瘋狂地複製、粘貼、未驗證可行性等行爲,一直令我髮指,直接致使搜索結果千篇一概,找到的都是那幾篇文章,最氣憤的是其中的內容仍是錯誤的。因此本人一直堅持,遇到的問題,確實驗證了可行,纔在博客貼出,以避免誤人誤己。(但願沒扯得太遠)
那就本身動動腦吧,稍微梳理下,其實這個過程很簡單,就是一個UTF-8的頁面發送數據到GB2312的頁面,因爲編碼不一樣,出現亂碼很正常,解決方法天然是統一編碼。
網頁的編碼,一是接收請求數據(requestEncoding)的編碼,一是發送響應(responseEncoding)的編碼。只要讓a頁面發送響應的編碼,b頁面接收請求的編碼一致,便可解決亂碼問題。
代碼只有一句,在a頁面Page_Load方法中加入 Response.ContentEncoding = Encoding.GetEncoding("gb2312"); 便可。 web
可能你會有意見,說,反過來設置b頁面接收請求的編碼與a頁面發送響應的一致,行不行呢。我試過了,不行,代碼見下,若是你知道其中原理,煩請告知,不勝感激! 網絡