如何解决XmlHttp.responseText的乱码问题
2007-09-02 15:53
507 查看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>如何解决XmlHttp.responseText的乱码问题</title>
<script type="text/vbscript">
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCode And &HFF00)/ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function
Function bytes2BSTR(vIn)
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 type="text/javascript">
function Test()
{
var http = GetXmlHttp();
var url;
url = "http://www.baidu.com/s?tn=cjlgainmoney&ct=&lm=&z=&rn=&word=%CA%AF%BE%B8&_sv=1&_si=%CB%D1%CB%F7";
// url = "http://www.baidu.com/s?tn=cjlgainmoney&word=%CA%AF%BE%B8&_sv=1&_si=%CB%D1%CB%F7";
http.open("GET", url, true);
http.onreadystatechange = function()
{
if (http.readyState == 4 && http.status ==200)
{
var text;
//乱码处理,主要是用vbscript的bytes2BSTR
//看到主题<title>和</title>之间是【百度搜索_石靖】了。
text = bytes2BSTR(http.responseBody);
// text = http.responseText;//直接用http.responseText会显示乱码
alert(text);//看到主题<title></title>之间是乱码
// document.getElementById("HtmlDiv").innerText = text;
}
}
http.send(null);
}
function GetXmlHttp()
{
var C = null;
try
{
C = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
C = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(sc)
{
C = null;
}
}
if( !C && typeof XMLHttpRequest != "undefined" )
{
C = new XMLHttpRequest();
}
return C;
}
</script>
</head><body>
<button onclick="Test()">请单击测试乱码</button>
<div id="HtmlDiv">
</div>
</body></html>
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>如何解决XmlHttp.responseText的乱码问题</title>
<script type="text/vbscript">
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCode And &HFF00)/ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function
Function bytes2BSTR(vIn)
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 type="text/javascript">
function Test()
{
var http = GetXmlHttp();
var url;
url = "http://www.baidu.com/s?tn=cjlgainmoney&ct=&lm=&z=&rn=&word=%CA%AF%BE%B8&_sv=1&_si=%CB%D1%CB%F7";
// url = "http://www.baidu.com/s?tn=cjlgainmoney&word=%CA%AF%BE%B8&_sv=1&_si=%CB%D1%CB%F7";
http.open("GET", url, true);
http.onreadystatechange = function()
{
if (http.readyState == 4 && http.status ==200)
{
var text;
//乱码处理,主要是用vbscript的bytes2BSTR
//看到主题<title>和</title>之间是【百度搜索_石靖】了。
text = bytes2BSTR(http.responseBody);
// text = http.responseText;//直接用http.responseText会显示乱码
alert(text);//看到主题<title></title>之间是乱码
// document.getElementById("HtmlDiv").innerText = text;
}
}
http.send(null);
}
function GetXmlHttp()
{
var C = null;
try
{
C = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
C = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(sc)
{
C = null;
}
}
if( !C && typeof XMLHttpRequest != "undefined" )
{
C = new XMLHttpRequest();
}
return C;
}
</script>
</head><body>
<button onclick="Test()">请单击测试乱码</button>
<div id="HtmlDiv">
</div>
</body></html>
相关文章推荐
- TIdHTTPResponseInfo 中文乱码问题解决
- 简易解析ajax,javascript-XMLHttpRequest,解决乱码问题
- HttpServletRequest/HttpServletResponse乱码问题解决
- 解决xmlHttp.responseText显示的全部是HTML
- xmlHttp.responseText正常,xmlHttp.responseXML拿不到值的问题
- HttpWebResponse解决乱码问题
- 如何解决httpResponse = httpClient.execute(httpGet);无法执行的问题?
- 从XMLHttpRequest请求响应里getResponseHeader(header)报错:Refused to get unsafe header "**" 问题解决
- HttpWebResponse无法准确获取CharacterSet导致网页数据乱码问题的解决
- ASP:如何解决Response.Redirect方法传递汉字丢失或乱码问题?
- 如何彻底解决SpringMVC4.0下使用解决@ResponseBody 中文乱码问题
- PHP ,Javascript,XMLHTTP,ResponseText 乱码问题的解决
- 【问题解决】HttpClient解析服务器返回的response出现乱码
- WinHttpRequest之get_ResponseText乱码问题
- XMLHttpRequest对象responseText属性的兼容性问题
- 如何解决 XMLHttpRequest 跨域请求的问题
- XMLHttpRequest对象解决中文乱码问题
- ajax的responseText乱码的问题的解决方法
- ASP.NET环境下XMLHttpRequest中responseText()方法返回值为空问题讨论
- 如何解决XSL转换XML的时候出现乱码的问题