這類問題通常在整合或二次開發ASP網站時遇到。按常理來說,瀏覽器的Cookie存放在客戶端,實際上與服務端使用什麼語言無關,但我們在實際操作過程中,總會遇到一些意想不到的問題。
1. 當ASP寫的Cookie的Key中帶有下劃線,例如我們在ASP中這樣設置Cookie:
Response.Cookies("Admin_User")="管理員";
那麼在aspx.cs的頁面,使用Request.Cookie["Admin_User"] ,是怎麼都讀不到的。在這裏我寫了一個循環,將當前cookie的所有Name與Value都輸出了一遍,發現下劃線“_”已經轉義成了“%5F”,而使用Request.Cookie["Admin%5FUser"] 就可以得到我們想要的“管理員”了。
遇到類似問題的朋友,不妨做這樣的嘗試。
2. 還需要注意中文亂碼的問題,不管我將字符集設置爲GB2312,還是GBK,甚至是UTF-8都沒法獲得正確的中文,實際上問題出在ASP那邊,ASP頁面顯示簡體中文時,需要設置“代碼頁”(它可讀寫,整型數,用於表示顯示頁內容的字符集,簡體中文爲936,日文爲932,ANSI爲1252)。
string cookie = System.Web.HttpUtility.UrlDecode(Request.Cookies["Admin%5FUser"].Value, System.Text.Encoding.GetEncoding(936));
使用以上的方式,便可以獲取包含中文的Cookie了。