[轉貼] Asp.Net Cookie 讀取中文變亂碼的解決方法(IE8 會發生 chrome 卻不會發生)

出至:http://tgw1029.blogspot.tw/2010/04/aspnet-cookie.html

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"))

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s