Asp生成utf-8编码静态页乱码问题的解决方法
作者:cnfgg 日期:2009-08-12
下面是asp生成utf-8编码静态页的函数代码:
复制内容到剪贴板
程序代码
程序代码<%@ CODEPAGE=65001 %>
<% Response.Charset="UTF-8" %>
<% Response.Buffer=True %>
<%
Filen = "template/test.htm"
Template = ReadFromUTF(Filen,"utf-8") '读取模板,注意编码对应模板文件编码
strtitle = "标题"
strcontent = "内容"
content = Replace(Template, "#title#",strtitle)
content = Replace(content, "#content#",strcontent)
sFilen = "html/test.htm"
Call WriteToUTF(content,sFilen)'生成静态页,其中存放文件夹需要手动建立
If Not Err Then Response.Write "成功,请等待返回"
Response.Write "<META http-equiv='refresh' content='2;url=rehtm.asp'>"
Function ReadFromUTF(TempString,CharSet) 'TempString要读取的模板文件路径; Charset是编码
Dim str
Set stm = server.CreateObject("adodb.stream")
stm.Type = 2 'adTypeBinary=1 adTypeText=2
stm.Mode = 3 'adModeRead=1 adModeWrite=2 adModeReadWrite=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,sFilen)'将替换后的内容写入HTML文档,content为替换后的字符串,filename为生成的文件名
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"' //编码,这里你可以改成任何编码
.Position = objStream.Size
.WriteText = content' //模版+数据 写入内容
.SaveToFile server.mappath(sFilen),2' //生成文件路径
.Close
End With
Set objStream = Nothing
End Function
%>
模板页test.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>
关键点:1、读取模板的时候用了"UTF-8"编码,所以模板文件必须是个UTF-8编码的文件,否则读取出来的是空白内容。
2、FSO不支持UTF-8编码文本的读取和写入(注:FSO可以生成Unicode非UTF-8),得用adodb.stream组件。
评论: 0 | 引用: 0 | 查看次数: -
发表评论
上一篇
下一篇

文章来自:
Tags:
相关日志: