想用fso编辑格式为utf-8格式的css文件,可是打开后发现中文注释为乱码.
比如:font-family:濂旇
我的代码:
- Set fso = Server.CreateObject("Scripting.FileSystemObject") '建立FSO对象
- Set fo = fso.OpenTextFile(Cssurl&"style.css",1,true,0)
- c= fo.ReadAll
- fo.Close
-
- %>
- <form language="javascript" onsubmit="return CheckForm()" name=WriteForm method="post" action="?action=save">
- <textarea id="article" name="article" cols="80" rows="30"><%=c%></textarea>
复制代码
问:该如何操作才不会出现中文成乱码的问题。css格式一定为utf-8,不可更改。
用adodb.stream来读取可以指定charset,这样读取出来的信息就是正确的。
希望以下代码对他人有用。
-
- Function LoadFile(ByVal File)
- Dim objStream
- On Error Resume Next
- Set objStream = Server.CreateObject("ADODB.Stream")
- With objStream
- .Type = 2
- .Mode = 3
- .Open
- .LoadFromFile Server.MapPath(File)
- If Err.Number<>0 Then
- Response.Write "出错,文件不存在"
- Err.Clear
- Response.End
- End If
- .Charset = "utf-8"
- .Position = 2
- LoadFile = .ReadText
- .Close
- End With
- Set objStream = Nothing
- End Function
-
- '存储内容到文件
-
- 'Set fso = Server.CreateObject("Scripting.FileSystemObject") '建立FSO对象
- ' Set fo = fso.OpenTextFile(Cssurl&"style.css",1,true,0)
- ' c= fo.ReadAll
- ' fo.Close
-
- %><form language="javascript" onsubmit="return CheckForm()" name=WriteForm method="post" action="?action=save">
- //'检测是否支持ADODB.Stream,不支持则不显示以下代码。
- <textarea id="article" name="article" cols="80" rows="30"><%=LoadFile("style.css")%></textarea>
复制代码
------------------------------------------------------------------------------
FileSystemObject,ADODB.Stream 能否操作UTF-8格式的文件
Scripting.FileSystemObject 对象创建文件的函数,是下面方式:
FileSystemObject.CreateTextFile(filename[,overwrite[,unicode]])
其中的 unicode 属性是这样:
可选项。Boolean 值指明是否以 Unicode 或 ASCII 文件格式创建文件。如果以 Unicode 文件格式创建文件,则该值为 True;
如果以ASCII 文件格式创建文件,则该值为 False。如果省略此部分,则假定创建 ASCII 文件。
我们是无法用这个函数来创建UTF-8格式文件的。
这时候,我们可以使用 ADODB.Stream 对象,使用方法见下面:
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"
.Position = objStream.Size
.WriteText=str
.SaveToFile server.mappath("/sitemap.xml"),2
.Close
End With
Set objStream = Nothing
--------------------------------------------------------------
Adodb.Stream读取和写入UTF-8编码的文件
<%'函数名称: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%>