FSO生成UTF-8编码文件的解决方法

昨天给aw写一个生成天气预报的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")
     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是可以设置编码的:
object.CreateTextFile(filename[, overwrite[, unicode]])

其中unicode参数可以为以下几种:

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

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

=============== stream遍历每一行 =====================
没处理过这样的编码,不过单独用stream流应该可以的。  

  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    

时间: 2024-09-05 16:40:53

FSO生成UTF-8编码文件的解决方法的相关文章

win7系统发生蓝屏打不开DMP文件的解决方法

  最近很多小编询问说ghost win7系统发生蓝屏打不开DMP文件,怎么办?DMP是系统错误产生的文件,当电脑发生蓝屏时,电脑就会生成一个蓝屏错误DMP文件和蓝屏图片,用户想打开DMP文件时发现,DMP文件根本打不开,到底是怎么回事呢?下面小编以Win7 64位系统为例,给大家介绍win7系统发生蓝屏打不开DMP文件的解决方法. 方法如下: 1.首先要下载安装Debugging Tools这个工具; 2.安装好了以后,在开始菜单下面的可以找得到一个[Debugging Tools for W

linux找不到动态链接库 .so文件的解决方法(转自:http://www.cnblogs.com/xudong-bupt/p/3698294.html)

linux找不到动态链接库 .so文件的解决方法 如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形. 可以通过ldd命名来查看可执行文件依赖的动态链接库,如下(其中D为可执行程序):  其中的libjson_linux-gcc-4.6_libmt.so cannot found. 解决这个问题:  (1)在系统中查找这个文件(当然要保证系统中已经有这个.so文件,只是查找路径没有设置正确而已): sudo fin

win7系统回收站无法清空文件的解决方法

  win7系统回收站无法清空文件的解决方法         首先使用Win+R组合键打开运行,输入cmd进入命令提示符. 在命令提示符窗口中输入chkdsk d:/f 按下回车. 接着选择Y回车即可清空回收站里的文件了.

win8系统下载腾讯视频总是qlv文件的解决方法

  win8系统下载腾讯视频总是qlv文件的解决方法           解决方法1: 1.首先我们要找到自己要下的视频,比如这个视频 一小时50分, 或者从手机腾讯视频app上直接找到这个视频; 2.然后 在手机上 缓存这个视频 我这个是已经缓存好了; 3.然后 把手机 接入电脑..以我的小米4c为例.找到:::计算机Mi-4c内部存储设备Androiddatacom.tencent.qqlivefilesvideos ; 4.我们看到有好几个 奇怪文件名的文件夹,我们缓存的视频就在里面,但是

Win7系统电脑插入U盘资料都变成CHK文件的解决方法

  Win7系统电脑插入U盘资料都变成CHK文件的解决方法           具体方法如下: 1.那些找不到的资料并没有丢,而是都变成了CHK文件,被存放在FOUND.000文件夹里,这个文件夹是隐藏的.比如baidu.txt转变为CHK文件的话就是baidu.CHK; 2.首先打开软件,在软件窗口最上方选择需要搜索的磁盘,然后进行搜索; 3.所有的CHK文件都会以列表的形式显示出来,包括文件类型和文件数量(如下图).然后可根据自己的需要,分别点击窗口下方的"恢复"或是"恢

win8无法使用蓝牙收发文件的解决方法

  们知道两台开启蓝牙的手机之间可以相互传递接受文件,不用再用U盘或者其他文件传输方式传递接受文件了,使用非常方便,但你知道win8.1系统下的蓝牙配置后也可以和手机间相互传递文件吗,跟着小编走,看小编是怎样操作实现手机和电脑相互传递接受文件的! win8无法使用蓝牙收发文件的解决方法 1.在任务栏右下角的通知区域找到蓝牙图标后点击,右击击任务栏通知区域蓝牙图标; 2.在弹出的菜单栏中点击"接收文件"; 3.接下来就会弹出"Bluetooth文件传送"对话框; 4.

win7系统每次开机总会自动弹出文件的解决方法

  win7系统虽然稳定.安全,但是即使在完美的系统也会遇到一些小问题的吧.比如最近很多用户询问小编为什么win7系统每次开机总会自动弹出文件?非常烦人,每次都要手动点击关闭.有什么办法能让win7系统电脑开机不弹出文件呢?方法当然是有的,接下去,本教程和大家分享win7系统每次开机总会自动弹出文件的解决方法. 1.单击"开始"菜单,单击"所有程序",鼠标指向"启动"文件夹,查看这里是不是含有该文件夹信息,如果则删除; 2.在桌面左下角单击&qu

Win7系统提示丢失xlive.dll文件的解决方法

  win7系统作为微软系统中的标志性系统,受到了不少用户的青睐,即使现在有更为先进的win8.win10系统,但还是有一批怀旧的用户认为win7有它可取之处,所以一直沿用至今.但是win7系统在打游戏时会出现一些问题,会提示错误:"无法启动此程序,因为计算机中丢失Xlive.dll.尝试重新安装该程序以解决此问题."出现这种提示的时候,大家一般都很惊慌,不知如何面对.小面小编来教大家Win7系统提示丢失xlive.dll文件的解决方法. 具体方法如下:   1.鼠标左键双击电脑桌面的

Win7无法配备动画文件的解决方法

  Win7无法配备动画文件的解决方法: 1.首先在win7系统中,同时按下"win+r"组合键调出"运行"窗口,然后在输入框中写入"gpedit.msc"命令,完成后点击回车键; 2.在系统弹出"本地组策略编辑器"页面后,我们依次展开"用户配置--管理模板--Windows组件--Internet Explorer--安全功能--本地计算机区域锁定安全"选项; 3.单击"本地计算机区域锁定安全&