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

.net 乱码,亟待解决,谢了先

先说下基本情况:
这套.net系统大概是2005年开发的,当时所有功能应该都是调试通过的,不过是软件公司做的,所以没有留下源代码,只有编译好的dll

目前情况是页面上方有一个显示状态的<asp:Label ID="lbl_cname" Runat="server" ForeColor="white">,此处应该是从数据库取出"cname"中文名放到了一个cookie里,然后传给label,就是这里出现乱码。

不过此前的系统为win2003 server sp1,显示都没问题。近期服务器中了病毒,所以重装系统,win2k3基本都是sp2的,换了好几套系统都有此类现象。requestEncoding方法已经在N个文档中试过,没有效果。

从代码方面解决应该是不可能了吧,目前只能从环境上解决,我这实在是没有招了,请大家帮帮忙吧。明天上班就要用了,谢谢了 --------------------编程问答-------------------- 查查数据库里面的数据是不是已经乱码了? --------------------编程问答-------------------- 不是啊,以前一直都正常的,是一个用了7年的系统了 --------------------编程问答-------------------- 存入COOKIE后 看cookie 的编码方式。复制出来 贴个位置看乱码不 --------------------编程问答-------------------- 这么说:1.DB没问题,2.web.config的requestEncoding,responseEncoding都是正确的,3.其他字段的显示都正常。那神奇了。。。

有的时候问题不知道从何入手的时候,需要把所有关联的地方都查一遍。
1) DB的Charset
2) asp.net应用的配置
3) 出问题页面的header的charset
4) 数据

上面的几个charset要保持一致。另外,没有源码不能debug你可以用fiddler拦截一下你的request和response检查下乱码是服务端产生的还是客户端产生的。 --------------------编程问答-------------------- cookie的编码问题是不是要在源码中解决啊?源码现在已经没有了,只有一个dll,这是我反编译看到的部分源码,

此处应该是取出
private void SetCookies(ArrayList useritems)
{
    ArrayList list = new ArrayList();
    list.Add("uid");
    list.Add("cname");
    list.Add("ename");
    list.Add("bumen");
    list.Add("pwd");
    list.Add("power");
    for (int i = 0; i < list.Count; i++)
    {
        this.Page.Response.Cookies.Add(new HttpCookie((string) list[i], useritems[i].ToString()));
    }
    new myoffice.upfile.upfile().Del_TempViewFile(int.Parse(useritems[0].ToString()));
    this.Page.Response.Cookies.Add(new HttpCookie("UsersName", useritems[1].ToString()));
    this.Page.Response.Cookies.Add(new HttpCookie("UsersPwd", useritems[4].ToString()));
    this.Page.Response.Cookies.Add(new HttpCookie("UsersClass", "1"));
}

 

这里应该是显示用的

private void Page_Load(object sender, EventArgs e)
{
    this.lbl_cname.Text = base.Request.Cookies["cname"].Value.ToString();
}

 

 
不过修改源码已经没有意义了。各位能不能从配置环境的角度上给想想折?
我用reflector看到的一些信息:

// Assembly yejin, Version 1.0.1447.22846

 
Location: E:\Work space\Web Site\yjnw\yejin\bin\yejin.dll 
Name: yejin, Version=1.0.1447.22846, Culture=neutral, PublicKeyToken=null 
Type: Library 
--------------------编程问答--------------------
引用 4 楼 fangxinggood 的回复:
这么说:1.DB没问题,2.web.config的requestEncoding,responseEncoding都是正确的,3.其他字段的显示都正常。那神奇了。。。

有的时候问题不知道从何入手的时候,需要把所有关联的地方都查一遍。
1) DB的Charset
2) asp.net应用的配置
3) 出问题页面的header的charset
4) 数据

上面的几个charset……


1.DB的Charset我正在看,因为又重装了一边系统
2.asp.net的配置我实在是不知道看哪里
3.出问题的页面的charset我也改过了没效果
4.数据应该没问题
补充一下,此类现象以前在客户端出过,原因是安装了IE8,IE8以下版本正常,卸载后恢复。如果能找出环境哪里不一样估计就能解决了。 --------------------编程问答-------------------- 应该是服务器端的问题吧,取出来就是“cname=����Ȫ”这是cookie里的值,用fiddler看的 --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,