如何解決遠(yuǎn)程頁面抓取中的亂碼問題
由于平時(shí)使用的網(wǎng)頁文件基本上都是gb2312編碼方式,如果通過xmlhttp控件讀取的話,肯定會(huì)出現(xiàn)亂碼問題,但是要把所有文件都改成utf-8編碼,操作上比較麻煩。經(jīng)過反復(fù)比較,我找到了相對(duì)實(shí)用的解決方法。
ff提供了overrideMimeType方法,可以指定返回值的編碼,所以解決起來比較簡單,只要把這個(gè)方法指向gb2312就可以了。對(duì)于IE,可以用vbs配合來作編碼轉(zhuǎn)換,用gb2utf8來轉(zhuǎn)換接收到的二進(jìn)制數(shù)據(jù),其中利用到execScript方法來調(diào)用vbs的函數(shù)。
<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>
相關(guān)文章
關(guān)于前端ajax請(qǐng)求的優(yōu)雅方案(http客戶端為axios)
這篇文章主要給大家介紹了關(guān)于前端ajax請(qǐng)求的優(yōu)雅方案,本文http客戶端為axios,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12AJAX和JSP實(shí)現(xiàn)的基于WEB的文件上傳的進(jìn)度控制代碼
AJAX和JSP實(shí)現(xiàn)的基于WEB的文件上傳的進(jìn)度控制代碼...2007-05-05js實(shí)現(xiàn)ajax分頁完整實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)ajax分頁,以完整實(shí)例形式詳細(xì)分析了ajax分頁的具體步驟與實(shí)現(xiàn)技巧,代碼備有詳盡的注釋便于理解,需要的朋友可以參考下2016-04-04一個(gè)奇怪的問題使用ajax提交必須alert才能賦值
在使用ajax提交的時(shí)候?qū)⒎祷刂蒂x給一個(gè)變量,無論怎么寫都沒法賦值,剛開始懷疑js有錯(cuò)但是ie沒有反應(yīng)過來,多次清緩存、部程序都沒效果2014-01-01MVC中基于Ajax和HTML5實(shí)現(xiàn)文件上傳功能
這篇文章主要介紹了MVC中基于Ajax和HTML5實(shí)現(xiàn)文件上傳功能的相關(guān)資料,需要的朋友可以參考下2015-10-10