文章背景:
某天,我的一個同事給我看了CSDN上面的一篇關於編程語言排行榜的文章,裡面我看到VB還是排名很不錯的,我就說,asp(vbscript)確實挺不錯。結果他就反駁我,說asp不好,很多東西很難實現。我說比如哪些東西?我開發了幾年的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的編碼轉換先寫到這裡,以後我還會推出更精彩的個人原創文章,謝謝大家!