<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
        主站蜘蛛池模板: eeuss影院www天堂免费| 一区二区三区视频免费| 亚洲av片不卡无码久久| 亚洲精品无码专区| a级片免费在线观看| 成人免费看吃奶视频网站| 国产成人综合亚洲AV第一页| 亚洲国产成人精品久久| aa级毛片毛片免费观看久| 成人免费无码大片A毛片抽搐色欲| 亚洲免费电影网站| 无码一区二区三区AV免费| 亚洲国产AV无码专区亚洲AV| 亚洲欧美黑人猛交群| 免费羞羞视频网站| 亚洲免费一级视频| 夫妻免费无码V看片| 亚洲中字慕日产2020| 在线看片人成视频免费无遮挡| 国产精品高清视亚洲一区二区| 无码中文字幕av免费放dvd| 高清在线亚洲精品国产二区| 亚洲婷婷第一狠人综合精品| 91在线手机精品免费观看| 国产亚洲av片在线观看18女人| 久久亚洲色WWW成人欧美| 五月婷婷综合免费| 亚洲精品视频在线免费| 日韩视频免费在线观看| 亚洲伊人久久精品影院| jizz免费在线观看| 亚洲精品无码久久久久久久| 成人毛片18女人毛片免费视频未 | 日韩免费在线视频| 亚洲小视频在线播放| 99精品视频在线免费观看| 亚洲欧洲日韩不卡| 污污网站18禁在线永久免费观看| 亚洲国产精品一区二区三区在线观看 | 亚洲大香人伊一本线| 国产又长又粗又爽免费视频|