Asp使用FSO写UTF-8编码文件的方法_asp应用_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

Asp使用FSO写UTF-8编码文件的方法

作者:黑客防线网安网站维护基地 来源:黑客防线网安网站维护基地 浏览次数:0

本篇关键词:FSO编码文件
黑客防线网安网讯:写一个生成天气预报的xml文件的程序,考虑到通用性,于是选择utf-8编码,我也比较偏好这个编码。最先想到用FSO来写这个xml文件,后来却发现生成的xml文件不能正常显示,仅仅是因为编码的原因。用记事本打开生成的xm
写一个生成天气预报的xml文件的程序考虑到通用性于是选择utf-8编码,我也比较偏好这个编码最先想到用FSO来写这个xml文件,后来却发现生成的xml文件不能正常显示,仅仅是因为编码的原因用记事本打开生成的xml文件,另存为utf-8编码的xml文件即可正常显示。于是在网上搜索了一下,结果发现很多人说FSO只能写ANSI编码的文件,不能写utf-8格式的文件,并且只能读写文本文件。很多人都选择用ADODB.STREAM对象来替代FSO对象,因为STREAM类有LOADFROMFILE和SAVETOFILE方法.并且有一个至关重要的属性CHARSET,这是FSO没有的。有人给出了样例程序:


\'-------------------------------------------------
\'
函数名称: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")
\黑客防线Asp,技术乐园 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
 

有这个样例程序,很轻松地搞定了生成utf-8编码的xml文件的问题。谁知一上传到服务器,访问这个页面居然显示为空白,所有的代码均没有执行,包括普通的HTML代码都不显示。后来经过一步一步测试,发现是下面这一行的问题:
stm.SaveToFile server.MapPath(FileUrl),2


更为诡异的是即使把这一行注释掉,这个页面依然不能执行,但是一旦删除这一行,整个页面就恢复正常了,估计是主机的原因……没办法咯,还是得用FSO,反正主机是支持FSO的,我还就不信FSO只能写ANSI编码的文件了!翻了一些电子书和大量网页,终于发现FSO是可以设置编码的
其中unicode参数可以为以下几种:


\-2'以系统默认格式打开文件。
\
-1'以 Unicode 格式打开文件。
\
0'以 ASCII 格式打开文件。
 



于是问题迎刃而解,上传到主机,测试,一切OK,哇哈哈~

=============== stream遍历每一行 =====================
没处理过这样的编码,不过单独用stream流应该可以的。黑客防线As,p技术乐园



\ dim st
\
dim c
\
dim strHTML
\ st
= Server.CreateObject("adodb.stream")
\ st.Type
= 2
\ st.Open
\ st.Position
= 0
\ st.loadFromFile Server.MapPath(
"christ.txt")
\ c
= st.readText
\ st.close
\ c
= split(c,chr(13)&chr(10))
\
for each strHTML in c
\ strHTML
= Trim(strHTML)
\ strHTML
= replace(strHTML,"'","''")
\ ......
\
next
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-4731-1.html
网站维护教程更新时间:2011-01-12 06:32:04  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer