Vbs(ASP)中,Scripting.FileSystemObject 对象可以读写 ANSI格式和UNICODE格式的文件,对于WEB中常用的UTF-8不支持。要读写UTF-8格式的文件,需使用ADODB.Stream对象。
下面两个函数分别是使用ADODB.Stream读取文件和写入文件,支持GB2312和utf-8。
读取UTF-8时,支持utf-8和utf-8 BOM。ADODB.Stream文本写入UTF-8时为BOM格式,开头会自动添加 三字节 EFBBBF。如果要去掉BOM,则要作一番处理,方法是将BOM头去掉,以二进制的方式写文件。
Function getFromFile(fn,charset)
Dim objStream
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 2 '文本 1 二进制
objStream.charset=charset '"GB2312" 'UTF-8
objStream.Open
objStream.loadfromfile fn
getFromFile =objStream.readtext
End Function
Function saveToFile(fn,str,charset)
'可生成UTF-8格式的文件 charset=GB2312 、UTF-8、 UTF-8BOM
Dim objStream,newStream
Dim bom
If UCase(charset)="UTF-8BOM" Then
charset="UTF-8"
bom=True
Else
bom=False
End if
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 2 '文本 1 二进制
objStream.Mode = 3 '读写
objStream.charset=charset
objStream.Open
objStream.writetext Str
If bom Then
objStream.saveToFile fn,2
Else
objStream.Position = 3
Set newStream = CreateObject("adodb.stream")
With newStream
.Mode = 3
.Type = 1 '二进制
.Open()
End With
objStream.CopyTo(newStream)
newStream.SaveToFile fn,2
newStream.close
End If
objStream.close
End Function