<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        編碼為GB2312網(wǎng)站讓AJAX接收的數(shù)據(jù)顯示支持中文

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:52:30
        文檔

        編碼為GB2312網(wǎng)站讓AJAX接收的數(shù)據(jù)顯示支持中文

        編碼為GB2312網(wǎng)站讓AJAX接收的數(shù)據(jù)顯示支持中文: 代碼如下:<script> var xmlHttp; var BrowerType=ie; function createXML(){ try{ xmlHttp = new ActiveXObject(Msxml2.XMLHTTP); } catch (e){ try{ xmlHttp = new ActiveXObject(Mi
        推薦度:
        導(dǎo)讀編碼為GB2312網(wǎng)站讓AJAX接收的數(shù)據(jù)顯示支持中文: 代碼如下:<script> var xmlHttp; var BrowerType=ie; function createXML(){ try{ xmlHttp = new ActiveXObject(Msxml2.XMLHTTP); } catch (e){ try{ xmlHttp = new ActiveXObject(Mi

        代碼如下:

        <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"; //用于記錄是否火狐,以便下面處理接收中文數(shù)據(jù)分析使用。
        }
        }
        function querytelcode(citys){
        createXML();
        showState=document.getElementById("showtelcode");
        xmlHttp.onreadystatechange = function(){
        if (xmlHttp.readyState == 2){
        showState.innerHTML = '<img src="https://www.gxlcms.com/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");//設(shè)定以gb2312編碼識(shí)別數(shù)據(jù),只有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 默認(rèn)是用UTF-8 傳遞數(shù)據(jù)。當(dāng)服務(wù)端的返回?cái)?shù)據(jù)是UTF-8編碼的時(shí)候,它工作得很好(開發(fā)web應(yīng)用,當(dāng)服務(wù)端和客戶端以及數(shù)據(jù)庫(kù)統(tǒng)一使用UTF-8編碼可以有效的避免亂碼問題)。如果服務(wù)端設(shè)置了正確的Content-Type Response Header以及編碼信息,那么XmlHttpRequest也可以正確工作。
        可是當(dāng)使用XMLHttpRequest讀取中文網(wǎng)頁(yè)內(nèi)容時(shí), 如果服務(wù)端的程序沒有設(shè)置Content-Type Response Header,或者Header沒有設(shè)置編碼類型,那么我們?cè)L問responseText屬性的時(shí)候就可能遭遇亂碼。如以下代碼用XMLHttpRequest獲取雅虎中國(guó)網(wǎng)站的星座站首頁(yè):
        代碼如下:

        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中國(guó)這樣專業(yè)的網(wǎng)站,對(duì)web標(biāo)準(zhǔn)的支持還很不徹底,彈出的html源碼中充斥不符合web標(biāo)準(zhǔn)的html標(biāo)簽,當(dāng)然還有已預(yù)見的亂碼。
        同樣遺憾的是,F(xiàn)ireFox 和 IE 的解決方法也是南轅北轍
        FireFox 做法:
        FireFox 的XMLHttpRequest對(duì)象支持overrideMimeType方法,可以指定返回?cái)?shù)據(jù)的編碼類型,利用該方法可以解決中文亂碼,前面的代碼修改如下:
        代碼如下:

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

        Internet Explorer 做法:
        IE不支持overrideMimeType方法,并且只能用一種很蹩腳的方法來(lái)解決,此時(shí)需要引入一個(gè)雜交的函數(shù):
        代碼如下:

        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函數(shù)直接解析XMLHttpRequest返回的二進(jìn)制數(shù)據(jù),其中要利用execScript方法來(lái)執(zhí)行VBScript的函數(shù)。所以說是一個(gè)雜交的函數(shù)。感謝blueidea論壇 提供的算法。
        雖然有了解決的辦法,但形式丑陋,而且不符合web標(biāo)準(zhǔn)。所以應(yīng)該在編程中盡量避免,如果是開發(fā)web應(yīng)用,應(yīng)盡量使用UTF-8編碼,或者在服務(wù)端設(shè)置正確的編碼信息。至于以上范例,有盜取其他網(wǎng)站內(nèi)容的嫌疑,更是不為提倡。
        附一篇:討論:
        原因:AJAX在接收responseText或responseXML的值的時(shí)候是按照UTF-8的格式來(lái)解碼的,如果服務(wù)器段發(fā)送的數(shù)據(jù)不是UTF-8的格式,那么接收responseText或responseXML的值有可能為亂碼。
        解決辦法: 在服務(wù)器指定發(fā)送數(shù)據(jù)的格式:
        在jsp文件中:
        response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
        或是
        response.setContentType("text/xml;charset=UTF-8");//返回的xml文件
        PHP:header('Content-Type:text/html;charset=GB2312');
        ASP:Response.Charset("GB2312")
        JSP:response.setHeader("Charset","GB2312");
        討論:
        PHP:header('Content-Type:text/html;charset=GB2312');
        這樣寫除非是小項(xiàng)目
        大項(xiàng)目都是按照框架走
        對(duì)于HEADER定義于config文件最前端解決方案
        在JS里有一個(gè)解析utf-8xml的方法寫的非常強(qiáng)
        建議用那
        非物理生命 traindiy

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        編碼為GB2312網(wǎng)站讓AJAX接收的數(shù)據(jù)顯示支持中文

        編碼為GB2312網(wǎng)站讓AJAX接收的數(shù)據(jù)顯示支持中文: 代碼如下:<script> var xmlHttp; var BrowerType=ie; function createXML(){ try{ xmlHttp = new ActiveXObject(Msxml2.XMLHTTP); } catch (e){ try{ xmlHttp = new ActiveXObject(Mi
        推薦度:
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费播放国产性色生活片| a毛片在线免费观看| 一二三四影视在线看片免费| 亚洲美免无码中文字幕在线| 久久99免费视频| 亚洲AV乱码一区二区三区林ゆな| 东方aⅴ免费观看久久av| 亚洲av日韩av高潮潮喷无码| 一级毛片免费观看不卡的| 亚洲精品自拍视频| 一二三四在线观看免费高清中文在线观看| 亚洲成av人片在线看片| 日韩av无码成人无码免费| 在线日韩日本国产亚洲| 香蕉免费一级视频在线观看| 国产在线19禁免费观看国产| 麻豆91免费视频| 国产成人精品日本亚洲网站| 91视频免费网址| 亚洲码欧美码一区二区三区| 亚洲AV无码专区日韩| 亚洲中文字幕乱码熟女在线| 国产大片线上免费看| 久久九九免费高清视频| 久久精品国产亚洲AV无码偷窥| 久久久高清免费视频| 免费国产va在线观看| 亚洲AV无码乱码在线观看富二代 | 亚洲综合日韩久久成人AV| 最刺激黄a大片免费网站| 91免费国产自产地址入| 亚洲国产成人综合| 免费a在线观看播放| 久久免费视频99| 亚洲αⅴ无码乱码在线观看性色| 亚洲伦乱亚洲h视频| 亚洲综合免费视频| 色老头综合免费视频| 丁香亚洲综合五月天婷婷| 日韩精品免费视频| 国产成人亚洲综合在线|