日期:2014-05-17  浏览次数:20480 次

为什么cookie保存中文会有问题?
保存:
  #region 保存 Cookies
  HttpCookie cookie = new HttpCookie("LoginInfo");
  cookie.Values["UserName"] = sUserName;
  cookie.Values["Password"] = sPassWord;

  if (sCookies == "0")
  {
  cookie.Expires = DateTime.MinValue;
  }
  else
  {
  cookie.Expires = DateTime.Now.AddDays(int.Parse(sCookies));
  }
  Response.Cookies.Add(cookie);
  #endregion

读取:
  #region 读取 Cookies 信息
  if (Request.Cookies["LoginInfo"] != null)
  {
  string username = Request.Cookies["LoginInfo"]["UserName"];
  string password = Request.Cookies["LoginInfo"]["Password"];

  ...
  }
  #endregion
英文的用户名和密码就没问题,中文的用户名就不行。

在网上找了一些方法:
cookie.Value = HttpUtility.UrlEncode(cookie.Value);

就是在保存和读取时用HttpUtility.UrlEncode处理,但我试了不行。
网上的例是是:Request.Cookies[cookieName].Value
而我用的是:Request.Cookies["LoginInfo"]["UserName"]

这个有关系吗,如何解决我的问题?

------解决方案--------------------
保存的时候用UrlEncode,读取的时候用UrlDecode