当前位置:编程学习 > C#/ASP.NET >>

求教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"/> --------------------编程问答--------------------
引用 1 楼 zx75991 的回复:
web.config加上一句
<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN"/>


OK
--------------------编程问答--------------------
引用 1 楼 zx75991 的回复:
web.config加上一句
<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN"/>
不给力啊,写了也还是不行 --------------------编程问答-------------------- 我看你页面都加

<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"); %>

我是这样解决的 你试一试吧~ --------------------编程问答--------------------
引用 5 楼 pbw68277118 的回复:
这个我也遇到了
web.comfig
加上:<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
页面调用JS的地方
加上 charset = "gb2312"
页头写上
<% Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2……
还是不行啊 --------------------编程问答-------------------- MyCookie.Value = Server.urlEncode("商业信息");
utf8编码
存Server.UrlEncode(Response.Cookies.Add(MyCookie));
读Server.UrlDecode(Request.Cookies["MyCookie"].Value) 
 
--------------------编程问答-------------------- escape(area) --------------------编程问答--------------------
引用 7 楼 wuyq11 的回复:
MyCookie.Value = Server.urlEncode("商业信息");
utf8编码
存Server.UrlEncode(Response.Cookies.Add(MyCookie));
读Server.UrlDecode(Request.Cookies["MyCookie"].Value)
这种倒是没试过,明天去试下,QQQ。。 --------------------编程问答--------------------
引用 7 楼 wuyq11 的回复:
MyCookie.Value = Server.urlEncode("商业信息");
utf8编码
存Server.UrlEncode(Response.Cookies.Add(MyCookie));
读Server.UrlDecode(Request.Cookies["MyCookie"].Value)
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 编码。。。然后获取再解码。 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 13 楼 only_you_forver 的回复:
晕了,
  比如我编码后生成的值是:%25e6%25b7%25b1%25e5%259c%25b3%25e5%25b8%2582
本地Server.UrlDecode(Server.UrlDecode(value))可以正确解码出值,但发布到服务器上就不行了,解析出来乱码

那就有可能你保存的位置不对,服务器和客户端都可以有cookie --------------------编程问答-------------------- 不要用server,用httputility.encode和httputility.decode --------------------编程问答--------------------

可以用Base64编码
// 写
Response.Cookies["test"].Value = Convert.ToBase64String(Encoding.UTF8.GetBytes("湖北"));
// 读
string Cookie = Encoding.UTF8.GetString(Convert.FromBase64String(Request.Cookies["test"].Value))
--------------------编程问答-------------------- 编码问题   <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> --------------------编程问答-------------------- --------------------编程问答-------------------- 统一编码格式  UTF-8 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 7 楼  的回复:
MyCookie.Value = Server.urlEncode("商业信息");
utf8编码
存Server.UrlEncode(Response.Cookies.Add(MyCookie));
读Server.UrlDecode(Request.Cookies["MyCookie"].Value)

================
这种是对的,支持。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,