ajax請求後返回中文亂碼問題

前兩天工做中,要提取網絡上服務器裏一個text文檔,可是在使用ajax請求後,返回的結果倒是一堆亂碼,根本沒法解決,其佈局可以下示例: html

也就是經過ajax.html請求ajax.txt文件,由於txt文件在編輯器外面建立,使其編碼集非utf-8,則請求後會產生亂碼,結果以下: ajax

在經過網上看了無數帖子,看了有經過修改ajax請求時request的編碼集,有說經過修改response時的編碼級,但最後試完了,下面一個函數能夠直接輕鬆解決: 服務器

  function loadPage(url){
        var xh=window.Event?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP")
        xh.open("GET",url,true)
        if(window.Event)
            xh.overrideMimeType("text/xml;charset=gb2312")
        xh.onreadystatechange=function(){
            if(xh.readyState!=4)
                return
            var v
            v=window.Event?xh.responseText:window.gb2utf8(xh.responseBody)
            alert(v)
        }
        window.gb2utf8=function(data){
            var glbEncode=[],t,i,j,len
            gb2utf8_data=data
            execScript("gb2utf8_data = MidB(gb2utf8_data, 1)+' '", "vbscript")
            t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2")
            t=t.split("@")
            i=0
            len=t.length
            while(++i<len){
                j=t[i].substring(0,4)
                if(!glbEncode[j]) {
                    gb2utf8_char = eval("0x"+j)
                    execScript("gb2utf8_char=Chr(gb2utf8_char)","vbscript")
                    glbEncode[j]=escape(gb2utf8_char).substring(1,6)
                }
                t[i]=glbEncode[j]+t[i].substring(4)
            }
            gb2utf8_data=gb2utf8_char=null
            return unescape(t.join("%")).slice(0,-1)
        }
        xh.send(null)
    }
    loadPage("ajax.txt");
只須要調用loadPage函數,傳入你須要請求的地址,而返回值則會經過alert(v)打印出來。結果以下: 網絡

相關文章
相關標籤/搜索