<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

    大家都知道,xmlhttp在通信時采用的是utf編碼,而國內(nèi)很多網(wǎng)頁的信息都是采用gbk編碼,所以當(dāng)直接通過ajax去連接網(wǎng)頁,并將獲取到的信息直接顯示的話就會出現(xiàn)亂碼的現(xiàn)象,有些時候無法改變服務(wù)器端網(wǎng)頁的編碼(例如獲取別的網(wǎng)站的天氣預(yù)報信息),在這種時候就只能在客戶端通過js做編碼的工作了,下面這段js就是用于將服務(wù)器端返回的gbk編碼字符串轉(zhuǎn)換為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("%"));??
    }
    這段代碼也是從網(wǎng)上搜到的,具體是誰寫的不清楚,所以在此未標(biāo)明作者,如作者看到還請見諒。
    有了這段代碼后,就可以直接對返回的網(wǎng)頁內(nèi)容進(jìn)行編碼了:
    var response=gb2utf8(response.responseBody);
    經(jīng)過這樣的轉(zhuǎn)碼后所獲得的頁面內(nèi)容就不會有亂碼現(xiàn)象了;
    當(dāng)然,如果服務(wù)器端頁面采用的是utf-8的編碼那就根本不需要進(jìn)行編碼工作了。

    posted on 2006-08-15 11:04 BlueDavy 閱讀(5413) 評論(10)  編輯  收藏 所屬分類: Java

    評論

    # re: 備忘:解決ajax獲取頁面直接顯示亂碼的方法 2006-08-15 13:43 emu

    其實只要服務(wù)器返回的數(shù)據(jù)頭聲明了
    <?xml version="1.0" encoding="gb2312"?>
    xmlhttp(request)控件應(yīng)該就可以正確解碼了。

    編碼可以參考一下:
    http://m.tkk7.com/emu/articles/31283.html
    http://m.tkk7.com/emu/articles/31756.html   回復(fù)  更多評論   

    # re: 備忘:解決ajax獲取頁面直接顯示亂碼的方法 2006-08-16 12:22 一農(nóng)

    @emu
    1、樓主已經(jīng)說了
    “有些時候無法改變服務(wù)器端網(wǎng)頁的編碼(例如獲取別的網(wǎng)站的天氣預(yù)報信息),在這種時候就只能在客戶端通過js做編碼的工作了,”
    2、這個方法在firefox應(yīng)該不行,所以ajax的編碼問題在瀏覽器里還是不能完全解決,只有等瀏覽器擴(kuò)展,并且統(tǒng)一處理方法了。
    execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");   回復(fù)  更多評論   

    # re: 備忘:解決ajax獲取頁面直接顯示亂碼的方法 2006-08-16 19:52 BlueDavy

    @一農(nóng)
    在firefox下非常簡單,可以調(diào)用xmlhttprequest來強(qiáng)制使用GBK編碼,這樣xmlhttprequest在發(fā)起請求和接收響應(yīng)時就不再采用UTF-8了:
    xmlHttpRequest.overrideMimeType("text/html;charset= gbk");  回復(fù)  更多評論   

    # re: 備忘:解決ajax獲取頁面直接顯示亂碼的方法 2006-08-16 20:46 emu

    @一農(nóng)

    1 “有些時候無法改變服務(wù)器端網(wǎng)頁的編碼(例如獲取別的網(wǎng)站的天氣預(yù)報信息),在這種時候就只能在客戶端通過js做編碼的工作了,”

    這種情況下也無法通過客戶端(瀏覽器)來做js編碼(應(yīng)為解碼),因為有跨域限制,雖然網(wǎng)頁可以用腳本設(shè)置document.domain,可是xmlhttp無法設(shè)置。如果用服務(wù)器程序建立http連接來獲取這些第三方數(shù)據(jù)的話,也應(yīng)該用后臺服務(wù)器支持的解碼方法而不是自己編碼。

      回復(fù)  更多評論   

    # re: 備忘:解決ajax獲取頁面直接顯示亂碼的方法 2006-08-16 20:48 emu

    @BlueDavy

    強(qiáng)!  回復(fù)  更多評論   

    # re: 備忘:解決ajax獲取頁面直接顯示亂碼的方法 2006-08-18 15:47 @asan

    to:一農(nóng)

    能具體給我說一說怎么弄嘛,我遇到這個問題沒解決出來,很是惱火哦!  回復(fù)  更多評論   

    # re: 備忘:解決ajax獲取頁面直接顯示亂碼的方法 2006-08-26 09:11 java人

    請問你這段代碼是在服務(wù)端跑還是在客戶端跑?  回復(fù)  更多評論   

    # re: 備忘:解決ajax獲取頁面直接顯示亂碼的方法 2006-08-26 10:13 BlueDavy

    ...客戶端js  回復(fù)  更多評論   

    # re: 備忘:解決ajax獲取頁面直接顯示亂碼的方法[未登錄] 2007-05-20 20:25 無為

    厲害,非常實用  回復(fù)  更多評論   

    # re: 備忘:解決ajax獲取頁面直接顯示亂碼的方法[未登錄] 2007-06-08 21:21 哈哈

    我是用js文件調(diào)用頁面..我的頁面在單獨的情況下可以顯示沒有亂碼...但是在用js調(diào)用時就出現(xiàn)亂碼....是什么問題.....那位大俠幫幫我啊....  回復(fù)  更多評論   

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導(dǎo)航

    <2006年8月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統(tǒng)計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品高清视频| 在线视频亚洲一区| 国产青草视频在线观看免费影院| 美女黄色毛片免费看| 亚洲成AV人片在| 免费无码A片一区二三区| 日本一区二区在线免费观看 | 在线亚洲v日韩v| 亚洲av永久无码精品漫画| 歪歪漫画在线观看官网免费阅读| 老司机午夜在线视频免费观| 亚洲成色999久久网站| 日本高清免费不卡在线| 亚欧免费一级毛片| 美女一级毛片免费观看| 亚洲美女色在线欧洲美女| 亚洲国产黄在线观看| 在线精品一卡乱码免费| 国产日韩精品无码区免费专区国产| 亚洲中字慕日产2021| 亚洲日本一区二区三区在线| 永久在线毛片免费观看| 91热久久免费精品99| 国产精品1024在线永久免费| 亚洲天然素人无码专区| 久久亚洲精品中文字幕无码| 免费播放特黄特色毛片| 免费可以看黄的视频s色| 色播在线永久免费视频网站| 国产精品亚洲片在线花蝴蝶| 亚洲人成电影院在线观看| 亚洲美女又黄又爽在线观看| 国产乱子伦精品免费女| 免费观看的毛片大全| 99re免费在线视频| av永久免费网站在线观看| 人与动性xxxxx免费| 国产精品亚洲lv粉色| 亚洲av永久无码嘿嘿嘿| 亚洲视频一区二区在线观看| 亚洲国产精品无码中文字|