最近,在搞這個東西,網上也找不到asp相關的,如果有人很早弄出來了,也不要笑話偶;費了好久,總算搞定;
原理:用stream對象預讀文件的頭兩個字節(jié),分析判斷出utf-8,unicode,ANSI(簡體中文操作系統(tǒng),即gb2312)編碼
相關資料:
ANSI: 無格式定義; Unicode: 前兩個字節(jié)為FFFE; Unicode big endian: 前兩字節(jié)為FEFF; UTF-8: 前兩字節(jié)為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的本地編碼,都是各國自己定義的,沒有固定的文件頭格式,在大陸中文操作系統(tǒng)下,是可讀的gb2312,在其他語言的系統(tǒng)下,就是亂碼,所以這部分沒必要再詳細區(qū)分 得到文件編碼,stream流就能按照需要的編碼打開,就不會亂碼了
經典論壇討論: http://bbs.blueidea.com/thread-2697909-1-1.html
出處:藍色理想
責任編輯:moby
◎進入論壇網絡編程版塊參加討論
|