利用fso.OpenTextFil讀取UTF-8檔案或用FSO.save產生UTF-8檔案時亂碼解決辦法產生靜態頁所使用的方法是讀取asp頁面的html程式碼,儲存為html文件,這個方法
由於動態頁是utf8格式的編碼,我得到它的html代碼後,使用fso保存,生成html是成功了,但是不能訪問,因為html的編碼有問題,選擇gb2312就可以正常訪問了。這樣不行,因為整站都是utf8格式的編碼,打開這個頁面,還需要選擇編碼才可訪問,這樣太麻煩了,也沒有人願意去訪問,所以必須解決utf8格式編碼問題。
經過一翻搜尋才了發現,fso不能產生utf8格式的檔案。所以要換種方法。
又找了一會兒,找到一個函數,可代替fso生成文件,它使用的adodb.stream物件來產生utf8文件的,函數如下:
複製代碼代碼如下:
'-------------------------------------------------
'函數名稱:ReadTextFile
'作用:利用AdoDb.Stream物件來讀取UTF-8格式的文字文件
'------------------------------------------------- ---
Function ReadFromTextFile (FileUrl,CharSet)
dim str
set stm=server.CreateObject("adodb.stream")
stm.Type=2 '以本模式讀取
stm.mode=3
stm.charset=CharSet
stm.open
stm.loadfromfile server.MapPath(FileUrl)
str=stm.readtext
stm.Close
set stm=nothing 本文來自
ReadFromTextFile=str
End Function
'-------------------------------------------------
'函數名稱:WriteToTextFile
'作用:利用AdoDb.Stream物件來寫入UTF-8格式的文字檔案
'------------------------------------------------- ---
Sub WriteToTextFile (FileUrl,byval Str,CharSet)
set stm=server.CreateObject("adodb.stream")
stm.Type=2 '以本模式讀取
stm.mode=3
stm.charset=CharSet
stm.open
stm.WriteText str
stm.SaveToFile server.MapPath(FileUrl),2
stm.flush
stm.Close
set stm=nothing
End Sub IISBOY網,IISBOY.COM
使用方法:
複製代碼代碼如下:
call WriteToTextFile ("../index.html","aaa","utf-8")
搞定。