HTMer » 编程开发 » ASP用FSO生成utf-8编码的静态页时出现乱码的解决方法

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>
顶一下 ▲()   踩一下 ▼()

相关文章