最近,在搞這個東西,網上也找不到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流就能按照需要的編碼打開,就不會亂碼了