ASP用FSO生成utf-8编码的静态页时出现乱码的解决方法
目前,在网络编程中,生成静态页技术已经越来越多的被使用,一般我们在ASP环境下,生成静态页时用到的技术是FSO,它是专门对文件进行操作的一个组件,FSO的编码属性只有三种:系统默认、Unicode、ASCII。所以,当我们需要生成的页面编码为utf-8时,就会出现乱码现象,那么如何来生成utf-8编码的静态页面呢?请接着往下看。
在ASP环境下我们用ADODB.Stream代替FSO读写utf-8文件,因为,ADODB.Stream有一个CharSet 属性,可以让您定义要打开或要写入的文件的编码类型,这样一来,ADODB.Stream不仅仅是只能读取或写入utf-8的文件,基本上什么格式的文件都可以操作了,具体方法如下:
准备工作:
①分别建立两个文件夹:template(存放模版文件)、article(存放生成后的静态页面文件)
②建立静态页模版文件:htmer.htm
③建立生成静态页程序文件htmer.asp
程序代码:
'======================htmer.asp代码======================
<%
Template="template/htmer.htm" '模版文件存放位置
str=ReadFromUTF(Template,"utf-8") '读取模版,注意编码对应模版文件编码
strtitle="标题"
strcontent="内容"
content=Replace(str,"<#title#>",strtitle) '将模版中标记的内容替换成实际需要的内容
content=Replace(content,"<#content#>",strcontent)
Filen="article/htmer.htm" '生成静态页文件存放位置
Call WriteToUTF(content,Filen) '生成静态页
If Not Err Then Response.Write "静态页面生成成功!"
Function ReadFromUTF(TempString,CharSet) 'TempString为要读取的模版文件路径;Charset是编码
Dim str
Set stm=server.CreateObject("adodb.stream")
stm.Type=2
stm.Mode=3
stm.Charset=CharSet
stm.Open
stm.loadfromfile Server.MapPath(TempString)
str=stm.readtext
stm.Close
Set stm=Nothing
ReadFromUTF=str
End Function
Function WriteToUTF(content,Filen) '将替换后的内容写入HTML文档,content为替换后的字符串,Filen为生成的文件名
Set objStream=Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset="utf-8" '编码,这里你可以改成任何编码
.Position=objStream.Size
.WriteText=content '模版+数据 写入内容
.SaveToFile server.mappath(Filen),2 '生成文件路径
.Close
End With
Set objStream=Nothing
End Function
%>
htmer.htm静态模版页文件代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><#title#></title>
</head>
<body>
<#content#>
</body>
</html>
如果觉得
《ASP用FSO生成utf-8编码的静态页时出现乱码的解决方法》网络编程,unix网络编程,java网络编程,windows网络编程不错,可以推荐给好友哦。
本文Tags: 电脑教学 - 网络编程,unix网络编程,java网络编程,windows网络编程,