当前位置:编程学习 > JS >>

用js来解决ajax读取页面乱码

vbs小铺

前两天写过服务端的,可以解决所有的浏览器读取中文乱码的问题,总是有点不爽,憋了一天,想出这个东东来,能解决firefox和ie读中文乱码的问题,opera不行,chome也没测试,暂且放着吧。

例子:

rsajax.js:

var http_request = false;
   function makePOSTRequest(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) {
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            http_request.overrideMimeType(text/html);
         }
      } else if (window.ActiveXObject) {
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert(Cannot create XMLHTTP instance);
         return false;
      }
     
      http_request.onreadystatechange = alertContents;
      http_request.open(POST, url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   //http_request.setRequestHeader("Content-Type","application/text/html; charset:utf-8");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
   if(!Sys.ie){
   http_request.overrideMimeType("text/html;charset=gb2312");
   }
      http_request.send(parameters);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
     if(Sys.ie){
             result = http_request.responseBody;
     }
     else
    {
     result = http_request.responseText;
     }
    //newresult=result.replace(/[^u0000-u00FF]/g,function($0){return escape($0).replace(/(%u)(w{4})/gi,"&#x$2;")});
    //newreslt=unescape(result.replace(/&#x/g,%u).replace(/;/g,)); //utf-8和汉字互转,不需要了
  
    document.getElementById(waiting).innerHTML = ;
            if(Sys.ie){
            document.getElementById(showresults).innerHTML =gb2utf8(result); }
    else{
    document.getElementById(showresults).innerHTML =result;
    }
         } else {
            alert(There was a problem with the request.);
         }
      }else{
   document.getElementById(waiting).innerHTML = <img src="loading.gif">;}
   }
  
   function get(obj) {
      //var poststr = "accounts=" + encodeURI( document.getElementById("accounts").value );
      makePOSTRequest(y.htm, );
   }
//ie引入一个杂交函数,nndx
   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("%"));
}

var Sys = {};
        var ua = navigator.userAgent.toLowerCase();
        if (window.ActiveXObject)
            Sys.ie = ua.match(/msie ([d.]+)/)[1]
        else if (document.getBoxObjectFor)
            Sys.firefox = ua.match(/firefox/([d.]+)/)[1]
        else if (window.MessageEvent && !document.getBoxObjectFor)
            Sys.chrome = ua.match(/chrome/([d.]+)/)[1]
        else if (window.opera)
            Sys.opera = ua.match(/opera.([d.]+)/)[1]
        else if (window.openDatabase)
            Sys.safari = ua.match(/version/([d.]+)/)[1];

index.php


<!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>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<title></title>

<script type="text/javascript" language="javascript" src="rsajax.js"></script>
<HEAD>
</head>
<body>

补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,