我实现的是在文本框中输入网址后,点击确定即可在页面中展示该网页。原来我在文本框中输入百度的网址,点击确定后,用Ajax方法获得百度服务器传来的源码,通过function gb2utf8(data)方法处理后,可以正常显示。不过我现在又加了个自己的tomcat服务器,输入百度后,由自己的服务器向百度索要源码,获得后再将用 gb2utf8(data)方法处理后的源码,传给前台网页显示,可是乱码问题又出现了,汉字不能正常显示,哎……真不知该如何是好单纯这个HTML可以解决汉字显示问题
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Ajax分析某页面的内容 </title>
</head> <script language="javascript" type="text/javascript">
function ajaxGetHTML(webURL){
var url=webURL;
if(url=="") url=document.getElementById("xurl").value;
var xmlhttp;
try{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
if(!xmlhttp) xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange =function(){
if (xmlhttp.readyState==4){
var s=xmlhttp.responseBody;
document.getElementById("box01").innerHTML= gb2utf8(s);
xmlhttp=null;
}
}
xmlhttp.open("GET",url,true)
xmlhttp.send(null);
} //汉字标准转换函数
function gb2utf8(data){
var glbEncode = [];
gb2utf8_data = data;
execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2");
t=t.split("@");
var i=0,j=t.length,k;
while(++i<j) {
k=t[i].substring(0,4);
if(!glbEncode[k])
{
gb2utf8_char = eval("0x"+k);
execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
glbEncode[k]=escape(gb2utf8_char).substring(1,6);
}
t[i]=glbEncode[k]+t[i].substring(4);
}
gb2utf8_data = gb2utf8_char = null;
return unescape(t.join("%"));
}
</script>
<body>
web URL: <input type=text id="xurl" ondblclick="javascript:ajaxGetHTML(this.value);" value="http://www.baidu.com" size="50">
<input type="button" name="Submit" value="Test" onClick="javascript:ajaxGetHTML('');">
<br>
<hr size="1" color="#FF6600">
<fieldset> <legend>HTML 内容 </legend>
<div id="box01"> </div>
</fieldset>
</body>
</html> 不知是不是var s = xmlhttp.responseBody的问题,不过换成xmlhttp.responseTest 就调用不了gb2utf8(s)方法了
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Ajax分析某页面的内容 </title>
</head> <script language="javascript" type="text/javascript">
function ajaxGetHTML(webURL){
var url=webURL;
if(url=="") url=document.getElementById("xurl").value;
var xmlhttp;
try{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
if(!xmlhttp) xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange =function(){
if (xmlhttp.readyState==4){
var s=xmlhttp.responseBody;
document.getElementById("box01").innerHTML= gb2utf8(s);
xmlhttp=null;
}
}
xmlhttp.open("GET",url,true)
xmlhttp.send(null);
} //汉字标准转换函数
function gb2utf8(data){
var glbEncode = [];
gb2utf8_data = data;
execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2");
t=t.split("@");
var i=0,j=t.length,k;
while(++i<j) {
k=t[i].substring(0,4);
if(!glbEncode[k])
{
gb2utf8_char = eval("0x"+k);
execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
glbEncode[k]=escape(gb2utf8_char).substring(1,6);
}
t[i]=glbEncode[k]+t[i].substring(4);
}
gb2utf8_data = gb2utf8_char = null;
return unescape(t.join("%"));
}
</script>
<body>
web URL: <input type=text id="xurl" ondblclick="javascript:ajaxGetHTML(this.value);" value="http://www.baidu.com" size="50">
<input type="button" name="Submit" value="Test" onClick="javascript:ajaxGetHTML('');">
<br>
<hr size="1" color="#FF6600">
<fieldset> <legend>HTML 内容 </legend>
<div id="box01"> </div>
</fieldset>
</body>
</html> 不知是不是var s = xmlhttp.responseBody的问题,不过换成xmlhttp.responseTest 就调用不了gb2utf8(s)方法了
responseText以字符串返回这两种不同的获取方式,处理方法肯定不一样,
var t=decodeURIComponent(escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2"));