asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0
由于平时使用的网页文件基本上都是gb2312编码方式,如果通过xmlhttp控件读取的话,肯定会出现乱码问题,但是要把所有文件都改成utf-8编码,操作上比较麻烦。经过反复比较,我找到了相对实用的解决方法。

  ff提供了overrideMimeType方法,可以指定返回值的编码,所以解决起来比较简单,只要把这个方法指向gb2312就可以了。对于IE,可以用vbs配合来作编码转换,用gb2utf8来转换接收到的二进制数据,其中利用到execScript方法来调用vbs的函数。
<script>
loadPage("x.lrc")
function loadPage(url){
  var xh=window.Event?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP")
  xh.open("GET",url,true)
  if(window.Event)
    xh.overrideMimeType("text/html;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>

posted on 2006-03-29 14:07 汪杰 阅读(324) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 466814
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜