各位老大,原来我的数据库是ACCESS,后来升级到SQL2005,发现我的二级联动出现乱码.数据库:SQL2005由于原来数据库是ACCESS,所以数据库smallclass 里面的smallclassname 的数据类型是"备注"
升级以后,smallclass表里的列名:smallclassname 的数据类型变成: NVARCHAR(50)
这样以来问题来了,例如原来在ACESS的smallclassname 的数据是:SHENZHEN,CHINA  逗号在ACCESS显示没问题.
但是SQL2005,数据"SHENZHEN,CHINA" 就变成 "SHENZHEN,CHINA"所以,在以下代码二级联动的时候,所有有空格或者符号的数据,都无法正常显示,都是跟数据库一样的乱码显示.请问这个要怎么解决,能否提供个解决思路给小弟。谢谢了.代码如下:
<%
Set Rs = Server.CreateObject("Adodb.Recordset")
Rs.Open "SELECT * FROM SmallClass ORDER BY SmallClassID asc",conn,1,1
%>
var onecount;
onecount=0;
subcat = new Array();
<%
   i = 0
   Do While Not Rs.eof 
%>
subcat[<%=i%>] = new Array("<%= Trim(Rs("SmallClassName"))%>","<%= Rs("BigClassID")%>","<%= Rs("SmallClassID")%>");
<%
        i = i + 1
        Rs.MoveNext
        Loop
        Rs.Close
%>
  
onecount=<%=i%>;function changelocation(locationid,formname)
    {
    formname.SmallClassID.length = 0;     var locationid = locationid;
    var i;
    for (i = 0;i < onecount; i++)
        {
            if (subcat[i][1] == locationid)
            {
             formname.SmallClassID.options[formname.SmallClassID.length] = new Option(subcat[i][0], subcat[i][2]);
            }        
        }
        
    }    
</script><select name="BigClassID" id="BigClassID" onChange="changelocation(document.form1.BigClassID.options[document.form1.BigClassID.selectedIndex].value,document.form1)">
        <option value="">请选择大类</option>
 <%
 i = 0
 Set RsBig = Conn.Execute("SELECT * FROM BigClass ORDER BY px_id")
 Do While Not RsBig.Eof
  If i = 0 Then BigClassID = RsBig(0)
  Response.Write("<option value="""&RsBig(0)&""">"&RsBig(1)&"</option>")
  i = i + 1
  RsBig.MoveNext
 Loop
 Set RsBig = Nothing
 %>
    </select>
          <select name="SmallClassID" id="SmallClassID">
            <option value="">请选择小类</option>
            <%
 If BigClassID <> "" Then
  Set RsSmall = Conn.Execute("SELECT * FROM SmallClass WHERE BigClassID = "&BigClassID)
  Do While Not RsSmall.Eof 
  Response.Write("<option value="""&RsSmall(0)&""">"&RsSmall(1)&"</option>")
  RsSmall.MoveNext
  Loop
 End if
 Set RsSmall = Nothing
 %>
          </select>

解决方案 »

  1.   


    <%=unescape("SHENZHEN&#44;CHINA")%>
      

  2.   

    用unescape()函数可以将&#xx;这样的编码转换为字符.
      

  3.   

    打开数据把&#44;替换回,不就行了
      

  4.   

    WEB页面的字符集显式设置一下
    <%@language=vbscript codepage="936"%>
    <% 
      Response.CharSet ="GB2312"
      s="SHENZHEN&#44;CHINA"
      Response.Write s
      %>
      

  5.   

    自己的解决办法,从一开始就不用HTMLENCODE写进数据库就没事。