各位老大,原来我的数据库是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>
升级以后,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>
<%=unescape("SHENZHEN,CHINA")%>
<%@language=vbscript codepage="936"%>
<%
Response.CharSet ="GB2312"
s="SHENZHEN,CHINA"
Response.Write s
%>