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

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

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

    備忘:解決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的編碼那就根本不需要進行編碼工作了。

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

    評論

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

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

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

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

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

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

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

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

    @一農

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

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

      回復  更多評論   

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

    @BlueDavy

    強!  回復  更多評論   

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

    to:一農

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

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

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

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

    ...客戶端js  回復  更多評論   

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

    厲害,非常實用  回復  更多評論   

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

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

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導航

    <2007年5月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲日本中文字幕一区二区三区| 一级一级一级毛片免费毛片| 57pao一国产成视频永久免费| 亚洲va无码专区国产乱码| 一个人看的免费高清视频日本| 又大又黄又粗又爽的免费视频 | 亚洲不卡在线观看| 57pao国产成永久免费视频| 久久精品国产亚洲av麻豆小说| 四虎免费影院ww4164h| 久久亚洲精品无码AV红樱桃| 免费国产黄网站在线观看可以下载 | 亚洲∧v久久久无码精品| 无码国产精品一区二区免费模式| 亚洲国产人成在线观看69网站 | 免费人妻无码不卡中文字幕系| 亚洲黄色在线观看视频| 男女免费观看在线爽爽爽视频| 亚洲色大成WWW亚洲女子| 一本久到久久亚洲综合| 中文字幕免费在线看| 亚洲黄色免费在线观看| 大香人蕉免费视频75| 深夜久久AAAAA级毛片免费看| 国产V亚洲V天堂A无码| 国产a视频精品免费观看| 亚洲heyzo专区无码综合| 亚洲中文无韩国r级电影| **aaaaa毛片免费同男同女| 亚洲AV色欲色欲WWW| 在线亚洲97se亚洲综合在线| 曰批视频免费40分钟试看天天| 中国亚洲呦女专区| 国产亚洲精品免费视频播放| 外国成人网在线观看免费视频| 亚洲一区AV无码少妇电影| 亚洲性久久久影院| 久久久久久免费视频| 一级一片免费视频播放| 亚洲精品**中文毛片| 亚洲国产精品尤物YW在线观看|