91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

編碼為GB2312網站如何讓AJAX接收的數據顯示支持中文

發布時間:2021-10-14 15:08:07 來源:億速云 閱讀:130 作者:小新 欄目:web開發

這篇文章給大家分享的是有關編碼為GB2312網站如何讓AJAX接收的數據顯示支持中文的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

代碼如下:


<script>
var xmlHttp;
var BrowerType="ie";
function createXML(){
try{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e){
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e2) {
xmlHttp =false;
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined'){
xmlHttp = new XMLHttpRequest();
BrowerType = "ff"; //用于記錄是否火狐,以便下面處理接收中文數據分析使用。
}
}
function querytelcode(citys){
createXML();
showState=document.getElementById("showtelcode");
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 2){
showState.innerHTML = '<img src="/img/process.gif" />';
}else if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
if (BrowerType=="ff"){
getLastCode=xmlHttp.responseText;//FireFox
}else{
getLastCode=gb2utf8(xmlHttp.responseBody);
}
showState.innerHTML = getLastCode;
}
}
var url='myorderAjax.asp?oid=<%=Request.QueryString("orderid")%>&cityname='+citys;
xmlHttp.open ("GET",url,true);
if (BrowerType=="ff"){
xmlHttp.overrideMimeType("text/html;charset=gb2312");//設定以gb2312編碼識別數據,只有FF支持。IE不行
}
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>


以下是此篇文章全文:
XMLHttpRequest 默認是用UTF-8 傳遞數據。當服務端的返回數據是UTF-8編碼的時候,它工作得很好(開發web應用,當服務端和客戶端以及數據庫統一使用UTF-8編碼可以有效的避免亂碼問題)。如果服務端設置了正確的Content-Type Response Header以及編碼信息,那么XmlHttpRequest也可以正確工作。
可是當使用XMLHttpRequest讀取中文網頁內容時, 如果服務端的程序沒有設置Content-Type Response Header,或者Header沒有設置編碼類型,那么我們訪問responseText屬性的時候就可能遭遇亂碼。如以下代碼用XMLHttpRequest獲取雅虎中國網站的星座站首頁:

復制代碼 代碼如下:


xmlhttp = getXMLHttpRequest();
var url = "http://cn.astrology.yahoo.com/";;
xmlhttp.open("GET", url, true);
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4)
if (xmlhttp.status == 200)
alert(xmlhttp.responseText);
};
xmlhttp.send(null);


縱使yahoo中國這樣專業的網站,對web標準的支持還很不徹底,彈出的html源碼中充斥不符合web標準的html標簽,當然還有已預見的亂碼。
同樣遺憾的是,FireFox 和 IE 的解決方法也是南轅北轍
FireFox 做法:
FireFox 的XMLHttpRequest對象支持overrideMimeType方法,可以指定返回數據的編碼類型,利用該方法可以解決中文亂碼,前面的代碼修改如下:

復制代碼 代碼如下:


xmlhttp = getXMLHttpRequest();
var url = "http://cn.astrology.yahoo.com/";;
xmlhttp.open("GET", url, true);
xmlhttp.overrideMimeType("text/html;charset=gb2312");//設定以gb2312編碼識別數據
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4)
if (xmlhttp.status == 200)
alert(xmlhttp.responseText);
};
xmlhttp.send(null);


Internet Explorer 做法:
IE不支持overrideMimeType方法,并且只能用一種很蹩腳的方法來解決,此時需要引入一個雜交的函數:

復制代碼 代碼如下:


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("%"));
}
xmlhttp = getXMLHttpRequest();
var url = "http://cn.astrology.yahoo.com/";;
xmlhttp.open("GET", url, true);
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4)
if (xmlhttp.status == 200)
alert(gb2utf8(xmlhttp.responseBody)); //注意這里要用responseBody
};
xmlhttp.send(null);


gb2utf8函數直接解析XMLHttpRequest返回的二進制數據,其中要利用execScript方法來執行VBScript的函數。所以說是一個雜交的函數。感謝blueidea論壇 提供的算法。
雖然有了解決的辦法,但形式丑陋,而且不符合web標準。所以應該在編程中盡量避免,如果是開發web應用,應盡量使用UTF-8編碼,或者在服務端設置正確的編碼信息。至于以上范例,有盜取其他網站內容的嫌疑,更是不為提倡。

感謝各位的閱讀!關于“編碼為GB2312網站如何讓AJAX接收的數據顯示支持中文”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马公市| 怀远县| 健康| 台中市| 措美县| 遂平县| 武隆县| 林甸县| 台南县| 锦州市| 项城市| 寻甸| 扬州市| 常德市| 凤冈县| 裕民县| 扬中市| 庆元县| 兖州市| 吐鲁番市| 竹北市| 西和县| 永德县| 筠连县| 濮阳县| 巩义市| 通化县| 大宁县| 砚山县| 钟祥市| 钟山县| 西峡县| 济阳县| 宝应县| 思南县| 龙川县| 芮城县| 福泉市| 岱山县| 措勤县| 龙江县|