Asp 編碼互轉(zhuǎn)的研究和實現(xiàn)代碼
更新時間:2009年04月30日 00:37:13 作者:
在2009年4月11日的時候,我已經(jīng)把代碼實現(xiàn)給做好了,但是一直沒有時間去寫這篇文章,所以今天抽空就把這篇文章給補上了,也為我們廣大asp愛好者遞上一份美羹,填補了asp編碼轉(zhuǎn)換的空缺。
文章背景:
某天,我的一個同事給我看了CSDN上面的一篇關(guān)于編程語言排行榜的文章,里面我看到VB還是排名很不錯的,我就說,asp(vbscript)確實挺不錯。結(jié)果他就反駁我,說asp不好,很多東西很難實現(xiàn)。我說比如哪些東西?我開發(fā)了幾年的asp都沒有發(fā)現(xiàn)很難實現(xiàn)的東西,除非是屬于非腳本語言范圍內(nèi)的,比如多線程的應(yīng)用(當(dāng)然,asp也可以模擬實現(xiàn)多線程任務(wù))等。結(jié)果他說了什么多線程,還有編碼轉(zhuǎn)換等,說自己曾經(jīng)為了轉(zhuǎn)換編碼費了很大精力卻沒有成功過,所以覺得asp太弱。聽到這樣的話,我們就知道他的編程底子還不夠扎實,并且對asp認(rèn)識也是非常有限的(并且后來說自己asp幾個常用的基本對象都不知道,也沒有用過,我差點被氣暈過去——連這都沒有用過,還跟我談asp很弱,看來...白長著么大了,連“沒有根據(jù),沒有發(fā)言權(quán)”都不懂!呵呵...),所以,我一氣之下,在那個周末就把asp編碼互轉(zhuǎn)的問題給實現(xiàn)了,讓他見識見識什么是asp,竟然這么看不起asp,想著就火大!當(dāng)然,我的這個研究也同時填補了到目前為止關(guān)于asp開發(fā)中編碼轉(zhuǎn)換研究的空白!
現(xiàn)在,我們開始轉(zhuǎn)入正題,首先,我們了解一下編碼轉(zhuǎn)換的過程,一段文字的編碼如果要轉(zhuǎn)換,我們就要知道當(dāng)前文字所對應(yīng)的編碼集,然后用對應(yīng)的編碼集去讀取,這是編碼正確被轉(zhuǎn)換的前提(如果這步弄錯了,那么轉(zhuǎn)換出來的就會是一連串亂碼)!好了,找對了當(dāng)前編碼,并且正確讀取出來了以后,我們就可以用設(shè)定好目標(biāo)編碼的Stream對象去保存這個內(nèi)容到指定文件中了,到這里我們的編碼轉(zhuǎn)換就成功了!
下面我們來看一下asp編碼轉(zhuǎn)換的具體代碼實現(xiàn):
'轉(zhuǎn)換編碼 content 要轉(zhuǎn)換編碼的內(nèi)容, cset 目標(biāo)編碼, dest 目標(biāo)文件絕對路徑
Function TransferCharSet(content, cset, dest)
Dim Objstream
Set Objstream = Server.CreateObject("adodb.stream")
objstream.Mode =3
objstream.Charset = cset
objstream.Type = 2
objstream.Open
objstream.WriteText content
objstream.Position = 0
objstream.SaveToFile dest,2
objstream.Close
set objstream = nothing
End Function
'用對應(yīng)編碼讀取指定內(nèi)容
Function getcontent(path)
Dim Objstream
Set Objstream = Server.CreateObject("Adodb.Stream")
objstream.Charset = GetCharSetName(path)
objstream.Type = 2
objstream.Mode =3
'objstream.Charset = code
objstream.Open
Objstream.LoadFromFile path
objstream.Position = 0
getcontent = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
'取得指定內(nèi)容的編碼名稱
Function GetCharSetName(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
GetCharSetName="utf-8"
ElseIf AscB(MidB(bintou,1,1))=&HFF And AscB(MidB(bintou,2,1))=&HFE Then
GetCharSetName="unicode"
Else
GetCharSetName="gb2312"
End If
objstream.close
Set objstream=nothing
End Function
好了,經(jīng)過這樣一段代碼,我們的轉(zhuǎn)換工作就完成了!希望這篇文章能給asp愛好者以及其他語言愛好者帶來一些幫助和啟發(fā)。
最后,我想說的是,編程語言的學(xué)習(xí)和使用并不難,重要的是自己多動腦筋,想想自己需要的功能怎么去實現(xiàn),而不是怨天尤人,說這個語言太弱了之類的話。
好了,祝大家編程并快樂著,關(guān)于asp的編碼轉(zhuǎn)換先寫到這里,以后我還會推出更精彩的個人原創(chuàng)文章,謝謝大家!
某天,我的一個同事給我看了CSDN上面的一篇關(guān)于編程語言排行榜的文章,里面我看到VB還是排名很不錯的,我就說,asp(vbscript)確實挺不錯。結(jié)果他就反駁我,說asp不好,很多東西很難實現(xiàn)。我說比如哪些東西?我開發(fā)了幾年的asp都沒有發(fā)現(xiàn)很難實現(xiàn)的東西,除非是屬于非腳本語言范圍內(nèi)的,比如多線程的應(yīng)用(當(dāng)然,asp也可以模擬實現(xiàn)多線程任務(wù))等。結(jié)果他說了什么多線程,還有編碼轉(zhuǎn)換等,說自己曾經(jīng)為了轉(zhuǎn)換編碼費了很大精力卻沒有成功過,所以覺得asp太弱。聽到這樣的話,我們就知道他的編程底子還不夠扎實,并且對asp認(rèn)識也是非常有限的(并且后來說自己asp幾個常用的基本對象都不知道,也沒有用過,我差點被氣暈過去——連這都沒有用過,還跟我談asp很弱,看來...白長著么大了,連“沒有根據(jù),沒有發(fā)言權(quán)”都不懂!呵呵...),所以,我一氣之下,在那個周末就把asp編碼互轉(zhuǎn)的問題給實現(xiàn)了,讓他見識見識什么是asp,竟然這么看不起asp,想著就火大!當(dāng)然,我的這個研究也同時填補了到目前為止關(guān)于asp開發(fā)中編碼轉(zhuǎn)換研究的空白!
現(xiàn)在,我們開始轉(zhuǎn)入正題,首先,我們了解一下編碼轉(zhuǎn)換的過程,一段文字的編碼如果要轉(zhuǎn)換,我們就要知道當(dāng)前文字所對應(yīng)的編碼集,然后用對應(yīng)的編碼集去讀取,這是編碼正確被轉(zhuǎn)換的前提(如果這步弄錯了,那么轉(zhuǎn)換出來的就會是一連串亂碼)!好了,找對了當(dāng)前編碼,并且正確讀取出來了以后,我們就可以用設(shè)定好目標(biāo)編碼的Stream對象去保存這個內(nèi)容到指定文件中了,到這里我們的編碼轉(zhuǎn)換就成功了!
下面我們來看一下asp編碼轉(zhuǎn)換的具體代碼實現(xiàn):
復(fù)制代碼 代碼如下:
'轉(zhuǎn)換編碼 content 要轉(zhuǎn)換編碼的內(nèi)容, cset 目標(biāo)編碼, dest 目標(biāo)文件絕對路徑
Function TransferCharSet(content, cset, dest)
Dim Objstream
Set Objstream = Server.CreateObject("adodb.stream")
objstream.Mode =3
objstream.Charset = cset
objstream.Type = 2
objstream.Open
objstream.WriteText content
objstream.Position = 0
objstream.SaveToFile dest,2
objstream.Close
set objstream = nothing
End Function
'用對應(yīng)編碼讀取指定內(nèi)容
Function getcontent(path)
Dim Objstream
Set Objstream = Server.CreateObject("Adodb.Stream")
objstream.Charset = GetCharSetName(path)
objstream.Type = 2
objstream.Mode =3
'objstream.Charset = code
objstream.Open
Objstream.LoadFromFile path
objstream.Position = 0
getcontent = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
'取得指定內(nèi)容的編碼名稱
Function GetCharSetName(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
GetCharSetName="utf-8"
ElseIf AscB(MidB(bintou,1,1))=&HFF And AscB(MidB(bintou,2,1))=&HFE Then
GetCharSetName="unicode"
Else
GetCharSetName="gb2312"
End If
objstream.close
Set objstream=nothing
End Function
好了,經(jīng)過這樣一段代碼,我們的轉(zhuǎn)換工作就完成了!希望這篇文章能給asp愛好者以及其他語言愛好者帶來一些幫助和啟發(fā)。
最后,我想說的是,編程語言的學(xué)習(xí)和使用并不難,重要的是自己多動腦筋,想想自己需要的功能怎么去實現(xiàn),而不是怨天尤人,說這個語言太弱了之類的話。
好了,祝大家編程并快樂著,關(guān)于asp的編碼轉(zhuǎn)換先寫到這里,以后我還會推出更精彩的個人原創(chuàng)文章,謝謝大家!
相關(guān)文章
access改mdb為asp所帶來的災(zāi)難 附mdb防下載方法
可能是隨著網(wǎng)絡(luò)安全技術(shù)的發(fā)展吧,管理員的素質(zhì)都在提高,在使用access+asp系統(tǒng)時,為不數(shù)據(jù)庫被人下載,到把mdb改為asp或asa。2010-05-05ASP的URLDecode函數(shù)URLEncode解碼函數(shù)
我們知道,ASP的Server對象有個URLEncode方法可以對地址進行編碼,但卻沒有相應(yīng)的解碼函數(shù),下邊的這個函數(shù)可以實現(xiàn)對URLEncode的解碼。2010-12-12ASP中if語句、select 、while循環(huán)的使用方法
這篇文章主要介紹了ASP中if語句、select 、while循環(huán)的使用方法,需要的朋友可以參考下2015-11-11asp下實現(xiàn)替換遠(yuǎn)程文件為本地文件并保存遠(yuǎn)程文件的代碼
asp下實現(xiàn)替換遠(yuǎn)程文件為本地文件并保存遠(yuǎn)程文件的代碼...2007-03-03