어떻게 원격 페이지 캡처 중의 부호화 문제를 해결합니까

2148 단어
평소에 사용하는 웹 파일은 기본적으로gb2312 인코딩 방식이기 때문에 xmlhttp 컨트롤러를 통해 읽으면 틀림없이 인코딩 문제가 발생할 수 있지만 모든 파일을utf-8 인코딩으로 바꾸어야 하기 때문에 조작이 비교적 번거롭다.반복적인 비교를 통해 나는 상대적으로 실용적인 해결 방법을 찾았다.ff는 오버라이드 MimeType 방법을 제공하여 반환값의 인코딩을 지정할 수 있기 때문에 해결하기가 비교적 간단하다. 이 방법을gb2312로 가리키면 된다.IE에 대해서는 vbs 협조로 인코딩 변환을 할 수 있고gb2utf8로 수신된 이진 데이터를 변환할 수 있으며 그 중에서execScript 방법을 이용하여 vbs의 함수를 호출할 수 있다.
 
  

<br>loadPage("index.htm") <br>function loadPage(url){ <br>    var xh=window.Event?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP") <br>    xh.open("GET",url,true) <br>    if(window.Event) <br>        xh.overrideMimeType("text/xml;charset=gb2312") <br>    xh.onreadystatechange=function(){ <br>        if(xh.readyState!=4) <br>            return <br>        var v <br>        v=window.Event?xh.responseText:window.gb2utf8(xh.responseBody) <br>        alert(v) <br>    } <br>    window.gb2utf8=function(data){ <br>        var glbEncode=[],t,i,j,len <br>        gb2utf8_data=data <br>        execScript("gb2utf8_data = MidB(gb2utf8_data, 1)+' '", "vbscript") <br>        t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2") <br>        t=t.split("@") <br>        i=0 <br>        len=t.length <br>        while(++i<len){ <br>            j=t[i].substring(0,4) <br>            if(!glbEncode[j]) { <br>                gb2utf8_char = eval("0x"+j) <br>                execScript("gb2utf8_char=Chr(gb2utf8_char)","vbscript") <br>                glbEncode[j]=escape(gb2utf8_char).substring(1,6) <br>            } <br>            t[i]=glbEncode[j]+t[i].substring(4) <br>        } <br>        gb2utf8_data=gb2utf8_char=null <br>        return unescape(t.join("%")).slice(0,-1) <br>    } <br>    xh.send(null) <br>} <br>

좋은 웹페이지 즐겨찾기