/// <summary>
/// Cookies賦值
/// </summary>
/// <param name="strName">主鍵</param>
/// <param name="strValue">鍵值</param>
/// <param name="strDay">有效天數</param>
/// <returns></returns>
public static bool setCookie(string strName, string strValue, int strDay)
{
try
{
HttpCookie Cookie = new HttpCookie(strName);
Cookie.Expires = DateTime.Now.AddDays(strDay);
Cookie.Value = Convert.ToBase64String(System.Text.Encoding.GetEncoding("UTF-8").GetBytes(strValue));
System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 讀取Cookies
/// </summary>
/// <param name="strName">主鍵</param>
/// <returns></returns>
public static string getCookie(string strName)
{
HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies[strName];
if (Cookie != null)
{
return System.Text.Encoding.GetEncoding("UTF-8").GetString(Convert.FromBase64String(Cookie.Value.ToString()));
}
else
{
return null;
}
}
以上是處理的方法,主要問題就出現在“Convert.ToBase64String”和“Convert.FromBase64String”上,在32位系統下直接對COOKIES進行賦值和讀取的操作(漢字)不會產生任何影響,但在64位下就會出現亂碼。
此問題困擾了博主很長一段時間,最後無意間搜索才發現有這種解決方法。