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