新版網站
C# .net中cookie值為中文時的亂碼解決方法
發布時間:2013/10/15   已被2230人閱讀    分享到:

一.cookie的名稱或子cookie的名稱不能為中文,否則無法獲得cookie

這個好辦,名稱不用中文即可

二.cookie的值為中文時候,取cookie的值會出現亂碼

解決辦法:存取cookie時候先解碼和編碼

存cookie,進行編碼:

cookie.Value = HttpUtility.UrlEncode("上海");

取cookie時候,進行解碼:
cookieValue = HttpUtility.UrlDecode(cookie.Value);

另外注意:

取子cookie時候,應該先解碼,再根據%號分解,才能取到子cookie的值.

寫Cookie里,一定要加上UrlEncode,用Request讀Cookie時,一定要加上UrlDecode

示例如下:
protected void Page_Load(object sender, EventArgs e)
     {
         HttpCookie GoodList = null;

         //如果GoodList不為空,則GOODID+1,GoodsName加"樂無煙"
         if (Request.Cookies["GoodList"] != null)
         {
             GoodList = Request.Cookies["GoodList"];
             GoodList.Values["GoodsID"] = Server.UrlEncode(Server.UrlDecode(Request.Cookies["GoodList"]["GoodsID"]) + ",1");
             GoodList.Values["GoodsName"] = Server.UrlEncode(Server.UrlDecode(Request.Cookies["GoodList"]["GoodsName"]) + ",樂無煙");
             GoodList.Expires = DateTime.Now.AddDays(1);
             Response.Cookies.Add(GoodList);
         }
         else
         {
             //初次寫入Cookie
             GoodList = new HttpCookie("GoodList");
             GoodList.Values["GoodsID"] = Server.UrlEncode("2");
             GoodList.Values["GoodsName"] = Server.UrlEncode("無煙鍋");
             GoodList.Expires = DateTime.Now.AddDays(1);
             Response.Cookies.Add(GoodList);
         }

         Response.Write(Server.UrlDecode(Request.Cookies["GoodList"]["GoodsID"]) + "<br/>");
         Response.Write(Server.UrlDecode(Request.Cookies["GoodList"]["GoodsName"]) + "<hr/>");
}

中文cookie的問題,
在Windows 2000正常,
在Windows 2003 sp1下會偶爾出現亂碼(遇到雙字節特殊字符時候,例子:「`蹆絀 ),
在windows 2003 SP2下基本亂碼

解決辦法:
采用
Server.UrlEncode();
Server.UrlDecode();
Cookie["MyCookie"] = Server.UrlEncode("中文")
Response.Write(Server.UrlDecode(Request.Cookies("MyCookie").Value()))
編碼和解碼。


另外編碼和解碼要一致
System.Web.HttpUtility.UrlDecode 和 System.Web.HttpUtility.UrlEncode
System.Web.HttpContext.Current.Server.UrlDecode 和 System.Web.HttpContext.Current.Server.UrlEncode

本文分享地址:http://www.adrhaerth.com/news/82.html上海網站建設公司朗晟網絡編輯,轉發請注明來源及版權歸屬。
上一篇:沒有了 【關閉】
下一篇:朗晟網絡公司新版官方網站正式上線
色聚阁