我实现的是在文本框中输入网址后,点击确定即可在页面中展示该网页。原来我在文本框中输入百度的网址,点击确定后,用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)方法了

解决方案 »

  1.   

    首先:没有responseTest,而是responseText,可能是LZ的笔误吧^_^其次: responseBody是以二进制形式返回的
    responseText以字符串返回这两种不同的获取方式,处理方法肯定不一样,
      

  2.   

    responseText以字符串返回 
      

  3.   

    你在解码的时候加上decodeURIComponent()试试
    var t=decodeURIComponent(escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2"));