以下函数采用FSO对象,文件位置在FSO.ASP。FSO对象的文件编码属性只有三种,系统默认,Unicode,ASCII,并没有我们要的utf-8,所以一般中文系统上使用FSO对象生成的文件都是gb2312网页编码格式,无法生成UTF-8编码,因此,英文等拉丁语系和中文可以正常显示,但象俄语等非拉丁语系,页面就会出现乱码。
代码如下:
function createfile(sfilename,scontent)
set fso=server.CreateObject("scripting.filesystemobject")
''set f1=fso.opentextfile(sfilename,2,true,-1) ''append=8
stm.open
stm.loadfromfile sfilename
f=stm.readtext
stm.Close
Set stm=Nothing
readfile=f
End Function
关于文件编码和网页编码, 请参考“字符集Charset和文件编码Encoding的区别详解”。
其他样例程序
代码如下:
''-------------------------------------------------
''函数名称: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
其中, 这一行要注意路径问题,stm.SaveToFile server.MapPath(FileUrl),2
11
22
33