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