目前,在网络编程中,生成静态页技术已经越来越多的被使用,一般我们在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>