在2009年4月11日的時候,我已經把程式碼實作給做好了,但是一直沒有時間去寫這篇文章,所以今天抽空就把這篇文章給補上了,也為我們廣大asp愛好者遞上一份美羹,填補了asp編碼轉換的空缺。文章背景:
有一天,我的一個同事給我看了CSDN上面的一篇關於程式語言排行榜的文章,裡面我看到VB還是排名很不錯的,我就說,asp(vbscript)確實還挺不錯。結果他就反駁我,說asp不好,很多東西很難實現。我說比如哪些東西?我開發了幾年的asp都沒有發現很難實現的東西,除非是屬於非腳本語言範圍內的,例如多執行緒的應用(當然,asp也可以模擬實作多執行緒任務)等。結果他說了什麼多線程,還有編碼轉換等,說自己曾經為了轉換編碼費了很大精力卻沒有成功過,所以覺得asp太弱。聽到這樣的話,我們就知道他的程式設計底子還不夠紮實,並且對asp認識也是非常有限的(並且後來說自己asp幾個常用的基本對像都不知道,也沒有用過,我差點被氣暈過去-連這都沒有用過,還跟我談asp很弱,看來...白長著麼大了,連沒有根據,沒有發言權都不懂!讓他見識見識什麼是asp,竟然這麼看不起asp,想著就火大!當然,我的研究也同時填補了到目前為止關於asp開發中編碼轉換研究的空白!
現在,我們開始轉入正題,首先,我們了解編碼轉換的過程,一段文字的編碼如果要轉換,我們就要知道當前文字所對應的編碼集,然後用對應的編碼集去讀取,這是編碼正確被轉換的前提(如果這步驟弄錯了,那麼轉換出來的就會是一連串亂碼)!好了,找對了當前編碼,並且正確讀取出來了以後,我們就可以用設定好目標編碼的Stream對象去保存這個內容到指定文件中了,到這裡我們的編碼轉換就成功了!
下面我們來看看asp編碼轉換的具體程式碼實作:
複製代碼代碼如下:
'轉換編碼content 要轉換編碼的內容, cset 目標編碼, dest 目標檔絕對路徑
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
'以對應編碼讀取指定內容
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
'取得指定內容的編碼名稱
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
好了,經過這樣一段程式碼,我們的轉換工作就完成了!希望這篇文章能為asp愛好者以及其他語言愛好者帶來一些幫助和啟發。
最後,我想說的是,程式語言的學習和使用並不難,重要的是自己過動腦筋,想想自己需要的功能怎麼去實現,而不是怨天尤人,說這個語言太弱了之類的話。
好了,祝大家編程并快樂著,關於asp的編碼轉換先寫到這裡,以後我還會推出更精彩的個人原創文章,謝謝大家!