求教cookie乱码问题
如题,我网站发布后有一个切换城市的功能,并将用户选择的城市保存在cookie中(www.zhms777.com),这里的城市显示的是乱码:这是我写入cookie的代码:
HttpCookie htc = new HttpCookie("Logined");
htc.Domain = "zhms777.com";
htc.Path = @"/";
htc.Expires = DateTime.Now.AddDays(10);
if (AreaLinkageManager.IsChildSite(cName))
htc.Value = HttpContext.Current.Server.UrlEncode(cName);
else
{
htc.Value = HttpContext.Current.Server.UrlEncode("");
cName = "";
}
这个是切换城市的js切换城市的代码:
function SetCookieValue(area) {
var cookieId = "Logined";
delCookie(cookieId);
document.cookie = cookieId + "=" + encodeURI(area) + ";path=/";
window.location.reload();
document.getElementById("Loading").style.display = "none";
}
function delCookie(name) {
var date = new Date();
date.setTime(date.getTime() - 10);
document.cookie = name + "=a; expires=" + date.toGMTString()-10;
}
页面编码全部设置的utf-8,我改成gb2312也不行,HttpUtility.UrlEncode这个设置编码也没用,请各位指教下。。。 --------------------编程问答-------------------- web.config加上一句
<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN"/> --------------------编程问答--------------------
OK
--------------------编程问答-------------------- 不给力啊,写了也还是不行 --------------------编程问答-------------------- 我看你页面都加
<meta content="text/html;charset=GB2312" http-equiv="Content-Type">
其实不用写在页面中..只要在配置文件中写就行
--------------------编程问答-------------------- 这个我也遇到了
web.comfig
加上:<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
页面调用JS的地方
加上 charset = "gb2312"
页头写上
<% Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); %>
我是这样解决的 你试一试吧~ --------------------编程问答-------------------- 还是不行啊 --------------------编程问答-------------------- MyCookie.Value = Server.urlEncode("商业信息");
utf8编码
存Server.UrlEncode(Response.Cookies.Add(MyCookie));
读Server.UrlDecode(Request.Cookies["MyCookie"].Value)
--------------------编程问答-------------------- escape(area) --------------------编程问答-------------------- 这种倒是没试过,明天去试下,QQQ。。 --------------------编程问答-------------------- Cookies.Add返回类型是void,而UrlEncode(string),晕啊。。。 --------------------编程问答-------------------- 没有人吗?
我只有在写cookie值的时候读取出现乱码,并且在firbug里拦截到的cookie也是编码后的正常的值,但后台Server.UrlDecode()解码就乱码了,求指教啊。。 --------------------编程问答-------------------- 问题很复杂和你的编程环境有关,查看是否有繁简冲突。 --------------------编程问答-------------------- 晕了,
比如我编码后生成的值是:%25e6%25b7%25b1%25e5%259c%25b3%25e5%25b8%2582
本地Server.UrlDecode(Server.UrlDecode(value))可以正确解码出值,但发布到服务器上就不行了,解析出来乱码 --------------------编程问答-------------------- 用url 编码。。。然后获取再解码。 --------------------编程问答-------------------- --------------------编程问答--------------------
那就有可能你保存的位置不对,服务器和客户端都可以有cookie --------------------编程问答-------------------- 不要用server,用httputility.encode和httputility.decode --------------------编程问答--------------------
--------------------编程问答-------------------- 编码问题 <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> --------------------编程问答-------------------- --------------------编程问答-------------------- 统一编码格式 UTF-8 --------------------编程问答-------------------- --------------------编程问答--------------------
可以用Base64编码
// 写
Response.Cookies["test"].Value = Convert.ToBase64String(Encoding.UTF8.GetBytes("湖北"));
// 读
string Cookie = Encoding.UTF8.GetString(Convert.FromBase64String(Request.Cookies["test"].Value))
================
这种是对的,支持。
补充:.NET技术 , ASP.NET