请问为什么使用XMLHTTP请求用innerHTML方式添加到中的中文会显示出乱码?

swans 2002-10-28 10:44:40
请问为什么使用XMLHTTP请求用innerHTML方式添加到<span></span>中的中文会显示出乱码?
两个页面如下
============index.htm============
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script>
function getFileList(mlbh,PageNo)
/*获取文件列表
{
FileList.innerHTML="LOADING...";
var xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");
xmlhttp.Open("get", "ShowFile.asp?mlbh="+mlbh+"&PageNo="+PageNo,false);
xmlhttp.Send();
FileList.innerHTML=xmlhttp.responseText; //这里inner到span中的中文是乱码,请问何故?
xmlhttp=null;
return false;
}

</script>

</head>
<body>
<input type="button" name="button1" value="显示数据" onclick="getFileList(1234444,1);">
<span id="FileList"></span>
</body>
</html>


==========ShowFile.asp=======================
<%@CodePage="936"%>
<%

……

Response.ContentType="text/html"
Response.CharSet="gb2312"

……
%>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="BUTTONFACE">
<tr>
<td width="40%" class="title">文件名称</td>
<td width="18%" align="right" class="title">文件大小</td>
<td width="11%" align="center" class="title">上传人</td>
<td width="26%" align="center" class="title">上传时间</td>
<td width="5%" class="title"> </td>
</tr><%
Dim x
For x=1 to PageSize
%>
<tr bgcolor="#FFFFFF" height="20">
<td><%if qxlx>=0 then%><a href="#" onClick="DownLoad('<%=rootPath & trim(Rs("wjljdz"))%>');"><%=Trim(Rs("wjmc"))%></a><%else%><%=trim(Rs("wjmc"))%><%end if%></td>
<td align="right"><%=trim(Rs("wh"))%></td>
<td align="center"><%=trim(Rs("scr"))%></td>
<td align="center"><%=trim(Rs("scsj"))%></td>
<td align="center"><%if qxlx>=2 then%><input name="id" type="checkbox" id="id" value="<%=Rs("only_id")%>"><%end if%></td>
</tr><%
Rs.MoveNext
Next
Rs.close
set Rs=nothing
%>
</table>
==========end========
...全文
410 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lostinet 2002-10-30
  • 打赏
  • 举报
回复
你的代码是没有问题的。
我看肯定是win98的问题。
aspbasicer 2002-10-30
  • 打赏
  • 举报
回复
早ASP页用Response.BinaryWrite返回信息,然后接收是用ResponseBody,而不是ResponseText就可以了,我就用这种方法
flashsoft2000 2002-10-28
  • 打赏
  • 举报
回复
<script language="vbscript">
function bytes2BSTR(vIn)
dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
strReturn=""
for i=1 to LenB(vIn)
ThisCharCode=AscB(MidB(vIn,i,1))
if ThisCharCode<&H80 Then
strReturn=strReturn & Chr(ThisCharCode)
else
NextCharCode=AscB(MidB(vIn,i+1,1))
strReturn=strReturn&Chr(CLng(ThisCharCode)*&H100+CInt(NextCharCode))
i=i+1
end if
next
bytes2BSTR=strReturn
end function
</script>
<script language="JScript">
var xmlhttp=new ActiveXObject("Msxml2.xmlhttp")
xmlhttp.open("GET",location,false)
xmlhttp.send()
var str = bytes2BSTR(xmlhttp.ResponseBody)
alert(str)
</script>
swans 2002-10-28
  • 打赏
  • 举报
回复
kyc(风往天吹) 谢谢
我返回的数据格式是HTML,所以
Response.ContentType="text/xml"
Response.BinaryWrite xmlDoc.xml
好象不太合适。
我已加上Response.CharSet="gb2312"
会不会比Response.CharSet="UTF-8"
更合适?
另外,现在发现在win2kIE5.5中,不会出现乱码。
现在是在win98IE5.5中出现出,会不会是系统的问题?
会不会是因为win98中的innerHTML方法问题?
kyc 2002-10-28
  • 打赏
  • 举报
回复
你也可以查看一下以前的帖子。
kyc 2002-10-28
  • 打赏
  • 举报
回复
我告诉你吧:
在执行页面要用一下的方法返回:

Response.CharSet="UTF-8"
Response.ContentType="text/xml"
Response.BinaryWrite xmlDoc.xml

在客户端用以下方法接收:
<script language=javascript>
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
xmlhttp.open("POST","test.asp",true)
xmlhttp.send("name=stinger")
if(xmlhttp.readyState==4){
//关键所在,
xmldoc.loadxml(xmlhttp.responseBody)
alert(xmlhttp.responseBody);
}
</script>

上面这样一定不会是乱码了,适用任何版本。

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧