今天在做ASP生成靜態頁的時候遇到這個問題
由於我生成靜態頁使用的方法是讀取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
使用方法:
call WriteToTextFile ("../index.Html","aaa","utf-8")
搞定。