«
详细讲解ASP检测文件编码的实现方法

时间:2008-5-31    作者:Deri    分类: 分享


   <p>  最近,在搞这个东西,网上也找不到asp相关的,如果有人很早弄出来了,也不要笑话偶;费了好久,总算搞定;</p><p>  原理:用stream对象预读文件的头两个字节,分析判断出utf-8,unicode,ANSI(简体中文操作系统,即gb2312)编码</p><p>  相关资料:</p><p>  ANSI:        无格式定义;</p><p>  Unicode:        前两个字节为FFFE;</p><p>  Unicode big endian:  前两字节为FEFF; </p><p>  UTF-8:         前两字节为EFBB;</p><code>function checkcode(path)<br />set objstream=server.createobject("adodb.stream")<br />objstream.Type=1<br />objstream.mode=3<br />objstream.open<br />objstream.Position=0<br />objstream.loadfromfile path<br />bintou=objstream.read(2)<br />If AscB(MidB(bintou,1,1))=&HEF And AscB(MidB(bintou,2,1))=&HBB Then<br />checkcoder="utf-8"<br />ElseIf AscB(MidB(bintou,1,1))=&HFF And AscB(MidB(bintou,2,1))=&HFE Then<br />checkcode="unicode"<br />Else<br />checkcode="gb2312"<br />End If<br />objstream.close<br />set objstream=nothing<br />end function</code><p>  补充:</p><p>  提醒,先前的简直是胡扯;ANSI的本地编码,都是各国自己定义的,没有固定的文件头格式,在大陆中文操作系统下,是可读的gb2312,在其他语言的系统下,就是乱码,所以这部分没必要再详细区分得到文件编码,stream流就能按照需要的编码打开,就不会乱码了</p>