평소 사용 하 는 웹 페이지 파일 은 기본적으로 gb 2312 인 코딩 방식 이기 때문에 xmlhttp 컨트롤 을 통 해 읽 으 면 어 지 러 운 문제 가 발생 할 수 있 지만 모든 파일 을 utf-8 인 코딩 으로 바 꾸 려 면 조작 이 번 거 롭 습 니 다.반복 적 인 비 교 를 통 해 나 는 상대 적 으로 실 용적 인 해결 방법 을 찾 았 다.ff 는 overrideMime Type 방법 을 제공 하여 반환 값 의 인 코딩 을 지정 할 수 있 기 때문에 해결 이 비교적 간단 합 니 다.이 방법 을 gb 2312 에 가리 키 기만 하면 됩 니 다.IE 에 대해 서 는 vbs 배합 으로 인 코딩 변환 을 할 수 있 으 며,gb2utf 8 로 받 은 바 이 너 리 데 이 터 를 변환 할 수 있 으 며,그 중에서 execScript 방법 으로 vbs 의 함 수 를 호출 할 수 있 습 니 다
<body></body>
<script>
loadPage("index.htm")
function loadPage(url){
var xh=window.Event?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP")
xh.open("GET",url,true)
if(window.Event)
xh.overrideMimeType("text/xml;charset=gb2312")
xh.onreadystatechange=function(){
if(xh.readyState!=4)
return
var v
v=window.Event?xh.responseText:window.gb2utf8(xh.responseBody)
alert(v)
}
window.gb2utf8=function(data){
var glbEncode=[],t,i,j,len
gb2utf8_data=data
execScript("gb2utf8_data = MidB(gb2utf8_data, 1)+' '", "vbscript")
t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2")
t=t.split("@")
i=0
len=t.length
while(++i<len){
j=t[i].substring(0,4)
if(!glbEncode[j]) {
gb2utf8_char = eval("0x"+j)
execScript("gb2utf8_char=Chr(gb2utf8_char)","vbscript")
glbEncode[j]=escape(gb2utf8_char).substring(1,6)
}
t[i]=glbEncode[j]+t[i].substring(4)
}
gb2utf8_data=gb2utf8_char=null
return unescape(t.join("%")).slice(0,-1)
}
xh.send(null)
}
</script>