用asp實現(xiàn)檢測文件編碼
更新時間:2007年01月03日 00:00:00 作者:
最近,在搞這個東西,網(wǎng)上也找不到asp相關的,如果有人很早弄出來了,也不要笑話偶;費了好久,總算搞定;
原理:用stream對象預讀文件的頭兩個字節(jié),分析判斷出utf-8,unicode,ANSI(簡體中文操作系統(tǒng),即gb2312)編碼
相關資料:
ANSI: 無格式定義;
Unicode: 前兩個字節(jié)為FFFE;
Unicode big endian: 前兩字節(jié)為FEFF;
UTF-8: 前兩字節(jié)為EFBB;
補充:
謝小雨提醒,先前的簡直是胡扯;ANSI的本地編碼,都是各國自己定義的,沒有固定的文件頭格式,在大陸中文操作系統(tǒng)下,是可讀的gb2312,在其他語言的系統(tǒng)下,就是亂碼,所以這部分沒必要再詳細區(qū)分
得到文件編碼,stream流就能按照需要的編碼打開,就不會亂碼了
原理:用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
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流就能按照需要的編碼打開,就不會亂碼了
相關文章
ASP將Excel數(shù)據(jù)導入到SQLServer的實現(xiàn)代碼
ASP將Excel數(shù)據(jù)導入到SQLServer的代碼,有點亂,大家根據(jù)需要自己查找下。2010-04-04asp ADO GetString函數(shù)與用GetString來提高ASP的速度
沒想到asp下有getstring這個東西,看樣子不熟悉這塊啊,以后考慮用這個,應該不錯,另外還有getrows等,都是asp下提高性能不錯的函數(shù)。2007-12-12ASP調用遠程XML數(shù)據(jù)的代碼(alexa排名數(shù)據(jù))
調用網(wǎng)易新聞的XML數(shù)據(jù)為例進行講解如果通過ASP遠程調取XML文件,并讀出數(shù)據(jù)。其實我們之前就使用了asp讀取alexa官方的數(shù)據(jù)。2011-09-09