ASP UTF-8编码生成静态网页的函数_应用技巧

以下函数采用FSO对象,文件位置在FSO.ASP。FSO对象的文件编码属性只有三种,系统默认,Unicode,ASCII,并没有我们要的utf-8,所以一般中文系统上使用FSO对象生成的文件都是gb2312网页编码格式,无法生成UTF-8编码,因此,英文等拉丁语系和中文可以正常显示,但象俄语等非拉丁语系,页面就会出现乱码。

复制代码 代码如下:

function createfile(sfilename,scontent)
set fso=server.CreateObject("scripting.filesystemobject")
'set f1=fso.opentextfile(sfilename,2,true,-1) 'append=8 only write=2 Unicode编码=-1
set f1=fso.opentextfile(sfilename,2,true)
f1.write(scontent)
f1.close
set fso=nothing
end function

选择用ADODB.STREAM对象来替代FSO对象,因为STREAM类有LOADFROMFILE和SAVETOFILE方法,并且有一个至关重要的属性CHARSET,这是FSO没有的。以下函数采用用Adodb.Stream编写,成功生成UTF-8网页文件。

复制代码 代码如下:

function createfile(sfilename,scontent)
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"
.Position = objStream.Size
.WriteText=scontent
.SaveToFile sfilename,2
.Close
End With
Set objStream = Nothing
end function

对于采用FSO的程序,只要把这个函数修改一下, 函数名称不变,就可以正常运行, 比较省事方便。

如果采用模板生成文件, 还需要把模板文件用UTF-8编码读进来,否则,后台发布正确文件编码,但模板文件读进来是用FSO的GB2312编码,模板页面的俄语等非拉丁语系,就会出现乱码。函数修改如下:

原来采用的FSO 的READFILE函数

复制代码 代码如下:

function readfile(sfilename)
Set fso=server.CreateObject("scripting.filesystemobject")
Set f = fso.OpenTextFile(sfilename, 1, true)
if not f.AtEndOfStream then readfile = f.readAll
Set f=nothing
Set fso=nothing
end function

替换采用的ADODB.STREAM 的READFILE函数

注意根据实际需要,去掉或保留Function readfile (sfilename,charset)charset参数charset。

复制代码 代码如下:

Function readfile (sfilename)
Dim f
Set stm=server.CreateObject("adodb.stream")
stm.Type=2 '以本模式读取
stm.mode=3
stm.charset="utf-8"
stm.open
stm.loadfromfile sfilename
f=stm.readtext
stm.Close
Set stm=Nothing
readfile=f
End Function

关于文件编码和网页编码, 请参考“字符集Charset和文件编码Encoding的区别详解”。

其他样例程序

复制代码 代码如下:

'-------------------------------------------------
'函数名称:ReadTextFile
'作用:利用AdoDb.Stream对象来读取UTF-8格式的文本文件
'----------------------------------------------------
Function ReadFromTextFile (FileUrl,CharSet)
Dim str
Set stm=server.CreateObject("adodb.stream")
stm.Type=2 '以本模式读取
stm.mode=3
stm.charset=CharSet
stm.open
stm.loadfromfile server.MapPath(FileUrl)
str=stm.readtext
stm.Close
Set stm=nothing
ReadFromTextFile=str
End Function

'-------------------------------------------------
'函数名称:WriteToTextFile
'作用:利用AdoDb.Stream对象来写入UTF-8格式的文本文件
'----------------------------------------------------
Sub WriteToTextFile (FileUrl,byval Str,CharSet)
Set stm=Server.CreateObject("adodb.stream")
stm.Type=2 '以本模式读取
stm.mode=3
stm.charset=CharSet
stm.open
stm.WriteText str
stm.SaveToFile server.MapPath(FileUrl),2
stm.flush
stm.Close
Set stm=Nothing
End Sub

其中, 这一行要注意路径问题,stm.SaveToFile server.MapPath(FileUrl),2

时间: 2024-09-20 14:26:18

ASP UTF-8编码生成静态网页的函数_应用技巧的相关文章

ASP UTF-8编码生成静态网页的函数

以下函数采用FSO对象,文件位置在FSO.ASP.FSO对象的文件编码属性只有三种,系统默认,Unicode,ASCII,并没有我们要的utf-8,所以一般中文系统上使用FSO对象生成的文件都是gb2312网页编码格式,无法生成UTF-8编码,因此,英文等拉丁语系和中文可以正常显示,但象俄语等非拉丁语系,页面就会出现乱码. 复制代码 代码如下: function createfile(sfilename,scontent) set fso=server.CreateObject("scripti

fso asp生成静态html的代码_应用技巧

FSO生成静态HTML文件的时候替换模板标签一直是一个很麻烦的问题,至少我是这么认为的,还要别外做一个模板,麻烦!,我今天看见有一个方法可以解决这个问题         如一个正常的index.asp页面,并且用ASP代码调出数据库中的内容,另建一个makehtml.asp的页面,加入一个textarea域,假设为name="body",将index.asp在textarea里调出来,如:  <textarea name="body"><!--#i

asp定时生成静态HTML的代码_应用技巧

复制代码 代码如下: <% '判断是否要生成新的HTML if Application("cache_asptohtml_date")="" then Application.Lock Application("cache_asptohtml_date")=now() Application.Unlock Call aspTohtml Response.Redirect("index.html") end if if D

asp.net中Table生成Excel表格的方法_实用技巧

本文实例讲述了asp.net中Table生成Excel表格的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: <!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/19

asp生成三维饼图的函数_应用技巧

为方便生成三维饼图函数,我收集了asp下的生成三维饼图的函数的代码,方便大家特殊情况下的使用 复制代码 代码如下: <% '参数含义(数组,横坐标,纵坐标,图表的宽度,图表的高度,图表标题,单位) function table2(stat_array,table_left,table_top,all_width,all_height,table_title,unit)        dim bg_color(10),pie(10)        bg_color(1)="#ff1919&q

ASP中实现的URLEncode、URLDecode自定义函数_应用技巧

在做ajax中的post时,发现在服务器端取得数据时总是乱码,网上看了些解决方法也搞不定,我post过去时是xml形式,由于乱码服务器端xml也解析不了或出错.于是在post前先把它编码,到服务器端再解码,这样问题解决了,但是要是数据很大时估计会很影响速度. 虽然ASP中的request会自动解码经过url编码的字符串,但是Request.BinaryRead(Request.TotalBytes)取得post数据时却不会解码,所以要进行解码. 下面是我找到的一个ASP中server.urlen

ASP.NET 生成静态页面 实现思路_实用技巧

1.首页选择HTML原型网页 然后再该HTML网页添加一些自认为特别的标记,已便到时候静态化的时候系统能更精确的进行操作! 2.获取HTML网页代码 我选择的是通过FileUpload控件进行获取静态度页面模型,进行保存! 复制代码 代码如下: if (FileUpload1.PostedFile.FileName == "") { Response.Write("<script>alert('请确定您是否选择了网页')</script>")

ASP生成静态htm页面基本代码_应用技巧

以下虚线框内为mk.asp文件的具体代码:--------------------------------------------------------------------------------<%filename="test.htm"if request("body")<>"" thenset fso = Server.CreateObject("Scripting.FileSystemObject"

asp生成静态HTML(动态读取)_应用技巧

复制代码 代码如下: <!--#include file="admin_Checkuser.asp"--> <% call ConnectionDatabase()dim str,str_newstr=""str_new=""sqlx="select id from Fl_Products order by id desc" set rsx=conn.execute(sqlx)do while not rsx