Asp.Net -Cookie讀取中文變亂碼的解決方法

有時我的可能因為特別需求,必須使用Cookie來存放簡短的中文字。但中文字的編碼與Cookie預設的編碼方式不同,因此必須先行在URL傳輸過程中經過一道編碼、解碼的程序,才不會發生中文字在Cookie中讀取出來為亂碼的情況。

一般建立Cookie的寫法為:

Dim cookie As New HttpCookie("UserInfo")
cookie.Values.Add("Login", "OK")
cookie.Values.Add("No", dr("員工編號"))
cookie.Values.Add("Name", (dr("員工姓名"))
Response.Cookies.Add(cookie)


由於其中"Name"的Cookie內容存放的是中文字員工姓名,讀取時使用Request.Cookies("UserInfo")("Name")後,會發現讀到的中文已經變為亂碼。

我們將原本的寫法加入HttpUtility.UrlEncode(編碼)與HttpUtility.UrlDecode(解碼),在URL中傳輸而進行編碼的字串轉換來解決亂碼的問題。修改後程式碼如下:

建立Cookie時編碼:



Dim cookie As New HttpCookie("UserInfo")
cookie.Values.Add("Login", "OK")
cookie.Values.Add("No", dr("員工編號"))
cookie.Values.Add("Name", HttpUtility.UrlEncode(dr("員工姓名")))
Response.Cookies.Add(cookie)


讀取時解碼:
HttpUtility.UrlDecode(Request.Cookies("UserInfo")("Name"))

0 意見:

張貼留言