ASP转静态的技术网上介绍很多,有模板法、FSO转静态法等等,各有区别,也各有长处与短处。现介绍另一种转静态网页的方法,利用ADODB.Stream转静态,废话不多说,看下面的例子,可以保存成一个模块,在转程序的时候进行调用。
<%
'生成静态页面方法
' path="/myweb2010/"
' root_path_html = "http://"&Request.ServerVariables("SERVER_NAME")&path&"index.asp"
' root_path=path&"index.html" '实际地址根目录
'call stream_html(源文件,生成目标的静态页面,生成的编码)
'call stream_html(Spage,Tpage,"gb2312")
'-------------------产品列表页--------------------
sub stream_html(Spage,Tpage,html_code)
wstr=GetPage(Spage,html_code)
Call WriteToUTF(Tpage,wstr,html_code)
end sub
'-------------------------------------------------------------------------------
'读取函数
function GetPage(url,codeType)
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "No-Cache"
'response.Write("<br>======"&url)
dim retrieval
set retrieval=createObject("Microsoft.XMLHTTP")
with retrieval
.Open "Get",url,false ',"",""
.Send
GetPage=BytesToBstr(.ResponseBody,codeType)
End with
set retrieval=nothing
End function
function BytesToBstr(body,cset)
dim objstream
set objstream=server.CreateObject("adodb.stream")
objstream.Type=1
objstream.Mode=3
objstream.open
objstream.write body
objstream.Position=0
objstream.Type=2
objstream.Charset=cset
BytesToBstr=objstream.ReadText
objstream.close
set objstream=nothing
End Function
'FileUrl 是文件保存的文件名,Str是要写入的内容,CharSet是采用什么编码写入
Sub WriteToUTF(FileUrl,str,CharSet)
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "No-Cache"
set stm=server.CreateObject("adodb.stream")
stm.Type=2
stm.mode=3
stm.charset=CharSet
stm.open
stm.WriteText str
' 文件另存为的模式 (1=非覆盖 2=覆盖)
' response.Write("<br>FileUrl======"&FileUrl)
stm.SaveToFile server.MapPath(FileUrl),2
stm.flush
stm.Close
set stm=nothing
end Sub
%>
大家在制作以UTF-8为编码的网站时,会遇到将网页转为UTF-8编码的网页,会发现转出来的页面会变乱码,主要是因为文件是以ANSI编码保存着,如何才能保存为UTF-8编码成为关键,以上程序只要更改相应编码,就可以解决此问题。
编辑:创意设计工作室