国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

解決遠(yuǎn)程頁面抓取中的亂碼問題?

2019-11-21 02:15:02
字體:
供稿:網(wǎng)友
由于平時(shí)使用的網(wǎng)頁文件基本上都是gb2312編碼方式,如果通過xmlhttp控件讀取的話,肯定會出現(xiàn)亂碼問題,但是要把所有文件都改成utf-8編碼,操作上比較麻煩。經(jīng)過反復(fù)比較,我找到了相對實(shí)用的解決方法。

  ff提供了overrideMimeType方法,可以指定返回值的編碼,所以解決起來比較簡單,只要把這個(gè)方法指向gb2312就可以了。對于IE,可以用vbs配合來作編碼轉(zhuǎn)換,用gb2utf8來轉(zhuǎn)換接收到的二進(jìn)制數(shù)據(jù),其中利用到execScript方法來調(diào)用vbs的函數(shù)。

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]

ie下的轉(zhuǎn)碼可以改進(jìn),通過正則的回調(diào)過程能提高不少效率  

復(fù)制代碼 代碼如下:

this.bs2str = function(bs){  
    if(!window.jsMidB) main.vbInit("MidB", 2);  
    if(!window.jsChr) main.vbInit("Chr", 1);  
    if(!bs2str.ss) bs2str.ss = [];  
    return unescape(escape(jsMidB(bs,1)).replace(/(.{2})(.{2})(.{2})/g, "%$3%$2").replace(/%([^0-7].)(.)(.{2})/g, function(a,a1,a2,a3){var s=a1+a3;if(!bs2str.ss[s]) bs2str.ss[s]=jsChr(eval("0x"+s));return bs2str.ss[s];}));  
    } 

不過我還是認(rèn)為載入數(shù)據(jù)用xmldom要好一些 
replace(/(.{2})(.{2})(.{2})/g, "%$3%$2") 改成 replace(/.{2}(.{2})(.{2})/g, "%$2%$1") 少一個(gè)存儲.比原來的快3倍以上. 
把eval去掉,效率還能提高一些 
復(fù)制代碼 代碼如下:

    // byte() encoding 
    this.bs2str = function(bs){ 
        if(!window.jsMidB) main.vbInit("MidB", 2); 
        if(!window.jsChr) main.vbInit("Chr", 1); 
        if(!this.bs2str.ss) this.bs2str.ss = []; 
        return unescape(escape(jsMidB(bs,1)).replace(/.{2}(.{2})(.{2})/g, "%$2%$1").replace(/%([^0-7].)(.)(.{2})/g, function(a,a1,a2,a3){var s=a1+a3;if(!This.bs2str.ss[s]) This.bs2str.ss[s]=jsChr("&H"+s);return This.bs2str.ss[s];})); 
    }  
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤冈县| 毕节市| 封丘县| 迁西县| 乌什县| 大石桥市| 寿宁县| 鹤峰县| 常熟市| 会东县| 大新县| 香港| 行唐县| 溧阳市| 云林县| 贵定县| 怀来县| 永登县| 广州市| 类乌齐县| 吉水县| 体育| 芜湖县| 常德市| 尉犁县| 富宁县| 高要市| 北川| 禄劝| 土默特左旗| 长沙市| 牙克石市| 陆河县| 霍邱县| 张家川| 嫩江县| 慈利县| 定日县| 嘉峪关市| 四平市| 锡林郭勒盟|