为什么XMLHTTP.responseText返回的中文值全是乱码?

dream520 2004-09-26 05:22:58
代码如下:

<span id="list">读取中……</span>
<script language="javascript">
xml = new ActiveXObject("Microsoft.XMLHTTP");
var post="";//构造要携带的数据
xml.open("POST","http://localhost/index.jsp",false);//使用POST方法打开一个到服务器的连接,以异步方式通信
xml.setrequestheader("content-length",post.length);
xml.setrequestheader("content-type","application/x-www-form-urlencoded");
xml.send(post);//发送数据
var res = xml.responseText;//接收服务器返回的数据
document.getElementById("list").innerText=res;
</script>

结果显示出的数据英文的没问题,中文的全是乱码,而且显示的代码只有原来网页的上半部分,怎么回事?
...全文
955 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssm1226 2004-09-27
  • 打赏
  • 举报
回复
1.可以用Drowning(暑假過完了~~) 给的方法进行转换~
2.可以用楼上的方法,返回XML数据,加入<?xml version='1.0' encoding='gb2312'?>
LiuYongSheng 2004-09-26
  • 打赏
  • 举报
回复
我也遇到这个问题,解决方法如下:
将返回的XML数据的第一行写成:<?xml version="1.0" encoding="gb2312" ?>

你试试看,如果可以就加分!

cleanduo 2004-09-26
  • 打赏
  • 举报
回复
up
Drowning 2004-09-26
  • 打赏
  • 举报
回复
<script language=VBScript>
function getHTTPPage(url)
dim Http
set http=createobject("Microsoft.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
set http=nothing
if err.number<>0 then err.Clear
end function
Function BytesToBstr(body,Cset)
dim objstream
set objstream = CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
Dim Url,Html
Url="http://www.seasky.biz/"
Html = getHTTPPage(Url)
document.write(Html)
</script>
Drowning 2004-09-26
  • 打赏
  • 举报
回复
谁有完整的adodb.stream代码js的
帮忙帖一下吧
我这只有vbs的
dream520 2004-09-26
  • 打赏
  • 举报
回复
可不可以告诉我怎么做,我不会呀。
dream520 2004-09-26
  • 打赏
  • 举报
回复
在javascript中可以用adodb.stream吗,我查一下。谢谢提醒。
DeltaCat 2004-09-26
  • 打赏
  • 举报
回复
两种方法
一、自己写编码转换函数
二、用 ADODB.STREAM 转换
dream520 2004-09-26
  • 打赏
  • 举报
回复
哦,错了,不是jscript,应该是javascript.
dream520 2004-09-26
  • 打赏
  • 举报
回复
我是说在jscript里如何实现?
DeltaCat 2004-09-26
  • 打赏
  • 举报
回复
在JSP里设置返回的内容为 TEXT/XML, 字符集为 GB2312
ajax乱码解决总结 第一,javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的, 第二,utf-8是每个汉字(unicode字符)用3个字节来存储。 第三,用utf-8来send数据是不会出现乱码的,是后台程序没有正确解码才会出现乱码。 第四,ajax发送数据的时候如果修改 Content-Type 为 application/x-www-form-urlencoded",肯定是用post方式,而“太大的数据往往会出错”是用GET方式发送数据造成的。 第五,用vbscript写的函数是用来把数据转成gbk编码(操作系统默认的编码方式。如果在繁体系统上就是big5之类的编码)的,而不是gb2312,两者的编码字符数量相差3倍左右。 第六,用cookie来发送数据,一是很容易溢出,二是要不停的擦屁股,否则cookie里面的数据在每个http请求(包括图片和脚本请求)中都会被发送。三是并发几个http请求的时候,没有办法指定那个cookie是要发送给那个http请求的。 ------------------------ 用AJAX 来GET回一个页面时,RESPONSETEXT里面的中文多半会出现乱码,这是因为xmlhttp在处理返回responseText的时候,是把 resposeBody按UTF-8编码进解码考形成的,如果服务器送出的确实是UTF-8的数据流的时候汉字会正确显示,而送出了GBK编码流的时候就 乱了。解决的办法就是在送出的流里面加一个HEADER,指明送出的是什么编码流,这样XMLHTTP就不会乱搞了。 PHP:header('Content-Type:text/html;charset=GB2312'); ASP:Response.Charset("GB2312") JSP:response.setHeader("Charset","GB2312");

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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