<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://m.tkk7.com/emu/articles/31283.html
    http://m.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
    鮮果

    導航

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

    統計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日韩免费电影网址| 亚洲高清成人一区二区三区| 猫咪社区免费资源在线观看| 中文字幕亚洲综合久久| 久久久久久亚洲精品无码| 成年18网站免费视频网站 | 久久亚洲AV成人无码国产最大| 九九久久国产精品免费热6| 免费观看四虎精品国产永久| 国产亚洲Av综合人人澡精品| 免费一看一级毛片全播放| 美女被免费视频网站a| 亚洲精品无码永久在线观看| 中文字字幕在线高清免费电影| 青青草免费在线视频| 亚洲精品无码av中文字幕| 免费大黄网站在线观看| 两个人www免费高清视频| 久久精品国产精品亚洲蜜月| 永久看日本大片免费35分钟| 亚洲天堂2016| 亚洲M码 欧洲S码SSS222| 免费在线看黄的网站| 亚洲国产美女精品久久| 免费一级毛片无毒不卡| 国产亚洲精品无码拍拍拍色欲 | 亚洲精品又粗又大又爽A片| 国产免费人成视频在线观看| 国产精品福利片免费看| 国产无遮挡吃胸膜奶免费看视频| 亚洲黄色激情视频| 亚洲国产人成精品| 99久久久国产精品免费蜜臀| 亚洲色大成WWW亚洲女子| 97国产免费全部免费观看| 久久久亚洲欧洲日产国码二区| 精品亚洲永久免费精品| 亚洲日韩在线观看免费视频| 美女视频黄视大全视频免费的| 免费观看的av毛片的网站| 热久久这里是精品6免费观看|