你的位置:首页 > 脚本语言

asp检测文件编码

2006-12-01 浏览:(3831) 脚本语言 评论(0)

最近,在搞这个东西,网上也找不到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流就能按照需要的编码打开,就不会乱码了

  • 发表评论
  • 查看评论
【暂无评论!】

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。