none
显示中文乱码问题 RRS feed

  • 问题

  •  

       最近,我电脑出问题重装了,以前做的练习都没了所以得重做,我记得:以前做这个时没有问题的呀?怎么这次就乱码了呢?

       而且,我在页面上拖放的一个Label 也是在后台赋值显示却没问题呢?代码如下:

     

     

        protected void btnWriteCookis_Click(object sender, EventArgs e)
        {//写入Cookis
            HttpCookie w = new HttpCookie("newCookis");
            w.Values["name"] = "李凯峰";
            w.Values["age"] = "110";
            w.Values["time"] = DateTime.Now.ToString();
            Response.Cookies.Add(w);//写入
            Response.Write("<script language='JavaScript'>alert('ok')</script>");
        }
        protected void btnReadCookis_Click(object sender, EventArgs e)
        {//读出、并显示Cookis
            HttpCookie r = Request.Cookies["newCookis"];
            Label lbl1 = new Label();
            Label lbl2 = new Label();
            Label lbl3 = new Label();
            lbl1.Text = r.Values["name"].ToString();
            lbl2.Text = r.Values["age"];
            lbl3.Text = r.Values["teme"];
            this.Panel1.Controls.Add(lbl1);
            this.Panel1.Controls.Add(lbl2);
            this.Panel1.Controls.Add(lbl3);
            //Response.Write(r.Values["name"]);
            //Response.Write(r.Values["age"]);
            //Response.Write(r.Values["time"]);
            this.Label1.Text = "这里也不能显示中文么?";//这个在布面上显示没问题!
        }
    2008年12月8日 10:03

答案

全部回复

  • 可能跟你的web.config里编码设置有关系

     

     

    如果不行,可以

    w.Values["name"] = Server.UrlEncode("李凯峰");

    读取的时候再解码即可

    Response.Write(Server.UrlDecode(r.Values["name"]));
    2008年12月8日 12:01
    版主
  •  

    晕死了,我把代码写成这样:

     

        protected void btnwrite_Click(object sender, EventArgs e)
        {
            HttpCookie nc = new HttpCookie("newCookis");
            nc.Values["name"] = Server.HtmlEncode("李凯峰");
            nc.Values["age"] = "110";
            nc.Values["time"] = DateTime.Now.ToString();
            Response.Cookies.Add(nc);
        }
        protected void btnShow_Click(object sender, EventArgs e)
        {
            HttpCookie get = Request.Cookies["newCookis"];
            Response.Write(Server.HtmlDecode(get.Values["name"]));
            Response.Write(get.Values["age"]);
            Response.Write(get.Values["time"]);
        }

     

    可是,显示出来的结果是这样:

    鏉庡嚡宄?age=1102008-12-8 22:48:17

     

    我用的是 Microsoft Visual Studio 2005 是不是需要重装了?!

    2008年12月8日 15:08
  • 是Server.UrlEncode

    不是Server.HtmlEncode

     

    不需要重装,但打个最新的补丁,说不定问题就没了
    2008年12月8日 15:13
    版主
  •  www.haodd123.com 写:

     

       最近,我电脑出问题重装了,以前做的练习都没了所以得重做,我记得:以前做这个时没有问题的呀?怎么这次就乱码了呢?

       而且,我在页面上拖放的一个Label 也是在后台赋值显示却没问题呢?代码如下:

     

     

        protected void btnWriteCookis_Click(object sender, EventArgs e)
        {//写入Cookis
            HttpCookie w = new HttpCookie("newCookis");
            w.Values["name"] = "李凯峰";
            w.Values["age"] = "110";
            w.Values["time"] = DateTime.Now.ToString();
            Response.Cookies.Add(w);//写入
            Response.Write("<script language='JavaScript'>alert('ok')</script>");
        }
        protected void btnReadCookis_Click(object sender, EventArgs e)
        {//读出、并显示Cookis
            HttpCookie r = Request.Cookies["newCookis"];
            Label lbl1 = new Label();
            Label lbl2 = new Label();
            Label lbl3 = new Label();
            lbl1.Text = r.Values["name"].ToString();
            lbl2.Text = r.Values["age"];
            lbl3.Text = r.Values["teme"];
            this.Panel1.Controls.Add(lbl1);
            this.Panel1.Controls.Add(lbl2);
            this.Panel1.Controls.Add(lbl3);
            //Response.Write(r.Values["name"]);
            //Response.Write(r.Values["age"]);
            //Response.Write(r.Values["time"]);
            this.Label1.Text = "这里也不能显示中文么?";//这个在布面上显示没问题!
        }

     

    cookie传递请用urlencode    htmlencode不太适合的

    2008年12月9日 1:13
  • 对,用EnCode和DeCode加密解密,原来没有这个问题应该是你没发现这个问题吧。。
    2008年12月23日 13:41
    版主
  • 这个问题是不是已经发重了。

     

    2008年12月31日 4:05
    版主