ASP的UTF-8编码生成静态网页的功能

下面的函数使用FSO对象和文件的位置是在fso.asp.the文件编码性能的FSO对象仅为三,系统默认,Unicode、ASCII码,我们想UTF-8,所以使用FSO对象文件的通用的中文系统GB2312编码格式无法生成UTF-8编码,因此,英语中文和拉丁文都可以显示,但像其他非俄罗斯的拉丁,页面会出现乱码。
复制代码代码如下所示:
函数的CreateFile(sFileName,内容)
设置FSO = server.createobject(脚本。FileSystemObject )
F1 = fso.opentextfile(sFileName,2,真的,- 1)'append = 8只写= 2 - 1 = Unicode编码
设置F1 = fso.opentextfile(sFileName,2,真的)
f1.write(内容)
f1.close
设置FSO
端功能

而adodb.stream FSO对象选择对象,因为流类有LoadFromFile和SaveToFile方法,并有一个很重要的属性的字符集,这是FSO没有。下面的函数是用ADODB。流和UTF-8的网页文件生成成功。
复制代码代码如下所示:
函数的CreateFile(sFileName,内容)
集objstream = server.createobject(ADODB。流)
与objstream
开。
。字符集=UTF-8
objstream大小。位置=。
WRITETEXT =内容。
SaveToFile sFileName,2。
关闭
结束
集objstream =没有
端功能

对于FSO程序的使用,只要函数被修改,函数的名称不变,就可以正常运行,更方便。

如果你使用模板来生成文件,你需要读取模板文件是UTF-8编码,否则,背景会发出正确的文件编码。但模板文件读取非拉丁语系,如FSO的GB2312编码,模板页面,等等,会出现乱码,函数修改如下:

原来的FSO ReadFile函数
复制代码代码如下所示:
函数ReadFile(sFileName)
设置FSO = server.createobject(脚本。FileSystemObject )
集F = fso.opentextfile(sFileName,1,真的)
如果不f.atendofstream然后ReadFile = f.readall
设置f =无
设置FSO
端功能

取代adodb.stream ReadFile函数

要删除或保留函数ReadFile(sFileName,字符)字符集的字符集参数根据实际需要。
复制代码代码如下所示:
函数ReadFile(sFileName)
昏暗的F
集STM = server.createobject(ADODB。流)
Stm。类型= 2在这种模式下读取
模式= 3
STM,字符集=UTF-8
stm.open
stm.loadfromfile sFileName
F = stm.readtext
STM。关闭
设置STM =无
ReadFile = F
端功能

文件编码和网络编码,请参阅字符集的字符集不同的细节和编码编码的文件。

其他的示例程序
复制代码代码如下所示:
-------------------------------------------------
功能名称:readtextfile
效果:读文本文件以UTF-8格式的数据流对象使用。
----------------------------------------------------
功能readfromtextfile(FileURL,字符集)
昏暗的STR
集STM = server.createobject(ADODB。流)
Stm。类型= 2在这种模式下读取
模式= 3
STM的字符集的字符集。
stm.open
Stm.loadfromfile server.MapPath(FileURL)
STR = stm.readtext
STM。关闭
设置STM =无
readfromtextfile = str
端功能

-------------------------------------------------
功能名称:writetotextfile
效果:写一个文本文件以UTF-8格式的数据流对象使用。
----------------------------------------------------
Sub WriteToTextFile(FileURL,ByVal Str,字符集)
集STM = server.createobject(ADODB。流)
Stm。类型= 2在这种模式下读取
模式= 3
STM的字符集的字符集。
stm.open
stm.writetext STR
stm.savetofile server.mappath(FileURL),2
stm.flush
STM。关闭
设置STM =无
端子

其中,该行已注意到路径的问题,stm.savetofile server.mappath(FileURL),2