因為asp.net使用UTF-8的文字編碼來顯示GB2312的中文,所以有的時候會出現亂碼,尤其在cookies的時候,更甚至是我們在web.config中這樣設定之後<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>,會導致我們的中文cookie變成亂碼,從而導致cookies無效,因此要將cookies轉化成UTF-8的格式:代碼如下: /**//// <summary>
/// 設定 Cookie
/// </summary>
/// <param name="lxfs"></param>
/// <param name="expiresDays"></param>
public static void SetCookie(string key, string value, int expiresDays)
{
DateTime expires = DateTime.Now.AddDays(expiresDays);
HttpCookie MyCookie = new HttpCookie(key);
MyCookie.Domain = ".yourdomain.com";
MyCookie.Value = HttpUtility.UrlEncode(value);
MyCookie.Expires = expires;
HttpContext.Current.Response.Cookies.Add(MyCookie);
}
讀取cookie的時候使用這個函數:
/**//// <summary>
/// 對cookie進行UTF編碼
/// author:jake
/// bt:080414
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string GetCookid(string str)
{
Encoding stre = Encoding.GetEncoding("UTF-8");
return HttpUtility.UrlDecode(str,stre);
}
如:GetCookid(HttpContext.Current.Request.Cookies["sswoo_user"].Value)
如此以來即可解決中文字元cookie丟失的問題了!