C#编写读取cookie ,出现中文乱码
C#部分代码:HttpCookiecookie=newHttpCookie("jwxt");cookie["姓名"]=name.Text;Response.Cookies...
C#部分代码:
HttpCookie cookie = new HttpCookie("jwxt");
cookie["姓名"] = name.Text;
Response.Cookies.Add(cookie);
HttpCookie cookieread = Request.Cookies["jwxt"];
message.Text = cookieread["姓名"];
在aspx文档中,有个TextBox的id为name,有个label的id为message。这段代码是通过一个button来实现写入和读取cookie。
在VS进行调试的时候,一切顺利。
通过http://127.0.0.1/default.aspx打开这个网页,一旦输入到TextBox的是中文,就在读取的时候出现乱码。请高手指点。
灰常感谢!! 展开
HttpCookie cookie = new HttpCookie("jwxt");
cookie["姓名"] = name.Text;
Response.Cookies.Add(cookie);
HttpCookie cookieread = Request.Cookies["jwxt"];
message.Text = cookieread["姓名"];
在aspx文档中,有个TextBox的id为name,有个label的id为message。这段代码是通过一个button来实现写入和读取cookie。
在VS进行调试的时候,一切顺利。
通过http://127.0.0.1/default.aspx打开这个网页,一旦输入到TextBox的是中文,就在读取的时候出现乱码。请高手指点。
灰常感谢!! 展开
2个回答
展开全部
/// 写cookie值
/// </summary>
/// <param name="strName">名称</param>
/// <param name="strValue">值</param>
public static void WriteCookie(string strName, string strValue)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[strName];
if (cookie == null)
{
cookie = new HttpCookie(strName);
}
cookie.Value=HttpUtility.UrlEncode(strValue, Encoding.GetEncoding("UTF-8"));
// cookie.Value = strValue;
HttpContext.Current.Response.AppendCookie(cookie);
}
/// <summary>
/// 读cookie值
/// </summary>
/// <param name="strName">名称</param>
/// <returns>cookie值</returns>
public static string GetCookie(string strName)
{
if (HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies[strName] != null)
{
//HttpUtility.UrlDecode(strName, Encoding.GetEncoding("UTF-8"));
//return HttpContext.Current.Request.Cookies[strName].Value.ToString();
return HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies[strName].Value.ToString(), Encoding.GetEncoding("UTF-8"));
}
return "";
}
/// </summary>
/// <param name="strName">名称</param>
/// <param name="strValue">值</param>
public static void WriteCookie(string strName, string strValue)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[strName];
if (cookie == null)
{
cookie = new HttpCookie(strName);
}
cookie.Value=HttpUtility.UrlEncode(strValue, Encoding.GetEncoding("UTF-8"));
// cookie.Value = strValue;
HttpContext.Current.Response.AppendCookie(cookie);
}
/// <summary>
/// 读cookie值
/// </summary>
/// <param name="strName">名称</param>
/// <returns>cookie值</returns>
public static string GetCookie(string strName)
{
if (HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies[strName] != null)
{
//HttpUtility.UrlDecode(strName, Encoding.GetEncoding("UTF-8"));
//return HttpContext.Current.Request.Cookies[strName].Value.ToString();
return HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies[strName].Value.ToString(), Encoding.GetEncoding("UTF-8"));
}
return "";
}
更多追问追答
追问
我换了你提供的方法去写,读出的cookie内容不出错了,但我多做了一点修改,如下:
cookie["姓名"] = HttpUtility.UrlEncode(name.Text, Encoding.GetEncoding("UTF-8"));
得到的结果是:
濮撳悕=输入的姓名
就是说,带索引的部分——"姓名"——还是出错了。
请指教,谢谢。
或者这样说吧,用带索引的cookie应该怎么写?
追答
濮撳悕
你这个值是怎么样取得的
你换种方式吧,
你参考上面的编码解码方式,其实就能找到答案的,自己想想吧
展开全部
编码问题,用 http://127.0.0.1/default.aspx 打开时,看下页面编码,是utf-8还是gb2312。
cookie存放时的编码,程序读取时用的编码,页面显示时用的编码,几处保持一致就可以了。
cookie存放时的编码,程序读取时用的编码,页面显示时用的编码,几处保持一致就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询