解决fso不能写入中文的替代办法:Adodb.Stream读取和写入UTF-8
作者:佚名 时间:2012-02-05
近日用fso写了个函数,用于读写txt文件以记录操作日志,在本地运行一切正常,在英文网站建设的时候,上传到国外空间(英文windows系统)则出错。经测试,写入英文和数字都没事,就是中文不行,文本文件的编码从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%>