解決ajax獲取頁面直接顯示亂碼的方法

大家都知道,xmlhttp在通信時採用的是utf編碼,而國內很多網頁的信息都是採用gbk編碼,所以當直接通過ajax去連接網頁,並將獲取到的信息直接顯示的話就會出現亂碼的現象,有些時候無法改變服務器端網頁的編碼(例如獲取別的網站的天氣預報信息),在這種時候就只能在客戶端通過js做編碼的工作了,下面這段js就是用於將服務器端返回的gbk編碼字符串轉換爲utf編碼字符串:
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 response=gb2utf8(response.responseBody);
經過這樣的轉碼後所獲得的頁面內容就不會有亂碼現象了;
當然,如果服務器端頁面採用的是utf-8的編碼那就根本不需要進行編碼工作了。  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章