這個是我實際遇到的問題
在本地測試的時候是好好的,結果發布到iis上,讀取出來的cookie成了亂碼
一開始使用了一個非常傻的方式,就是把含有中文的cookie放到最後在存入,這個至少解決了一個問題,即不含有中文的cookie能夠正常讀取,可能是中文的亂碼導致了cookie的位元組讀亂了
後來改進了,尋找了網上的方法,也給你們粘貼上來,供大家參考
為了防止這篇文章刪掉,我給粘下來了。
下面是寫入cookie的代碼
[csharp] view plain copy
HttpCookie cookie = new HttpCookie("username");
cookie.Value = "張三,14,images/1.jpg";
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);
下面是讀取cookie的代碼
[csharp] view plain copy
if (Request.Cookies["username"]!=null)
{
string username = Request.Cookies["username"].Value;
Response.Write(username);
}
有時讀取出來的cookie值中的中文部分可能是亂碼,不管是有什麼導致的,我們都可以通過編碼進行解決
更改上面寫入cookie的代碼
[csharp] view plain copy
HttpCookie cookie = new HttpCookie("username");
cookie.Value = HttpUtility.UrlEncode("張三,14,images/1.jpg",Encoding.GetEncoding("UTF=8"));
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);
更改上面讀取cookie的代碼
[csharp] view plain copy
if (Request.Cookies["username"]!=null)
{
string username =HttpUtility.UrlDecode(Request.Cookies["username"].Value,Encoding.GetEncoding("UTF-8"));
Response.Write(username);
}
想這樣,在儲存和讀取cookie的時候都使用utf8的方式,就不會再出現亂碼了,不管是在伺服器還是本地都行,試過了