解決fso不能寫入中文的替代辦法:Adodb.Stream讀取和寫入UTF-8
作者:佚名 時間:2012-02-05 分享到:
近日用fso寫了個函數,用于讀寫txt文件以記錄操作日志,在本地運行一切正常,在英文網站建設的時候,上傳到國外空間(英文windows系統(tǒng))則出錯。經測試,寫入英文和數字都沒事,就是中文不行,文本文件的編碼從ANSI改為unicode仍然不行。上網找到解決辦法,是用Adodb.Stream的二進制功能實現讀寫。兩者的功能和用法大體接近,但Adodb.Stream適用性更廣,只要服務器沒有禁止這個組件。下面給出用Adodb.Stream讀寫文本文件實現記錄操作日志的函數:
sub wirteLog(str)
dim stream,char,FileUrl,templet
char = "utf-8"
FileUrl = "log.txt"
set stream=server.CreateObject("adodb.stream")
stream.Type=2'以本模式讀取
stream.mode=3
stream.charset=char
stream.open
stream.loadfromfile server.MapPath(FileUrl)
templet=stream.readtext
stream.WriteText vbcrlf & str
stream.SaveToFile server.MapPath(FileUrl),2
stream.flush
stream.Close
set stream=nothing
end sub
--------------------------------------------------------------------------------
另附讀取和寫入的示例:
<%'函數名稱:ReadTextFile
'作用:利用Adodb.Stream對象來讀取UTF-8編碼的文件
'示例:ReadFromTextFile("File/FileName.htm",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編碼的文件
'示例:WriteToTextFile("File/FileName.htm",Content,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%>