个人比较懒,所以在生成静态首页的时候特别想逃避,找一个更简单的方法,然后被我找到了,一般做测试的时候肯定会写一个动态的首页[default.asp]吧,直接拿这个来做文章就好了。
test.asp : form之类的表单提交就不写了,<textarea name="content"><!--#include file="default.asp"--></textarea>,就直接这样引用就完了,页面里面textarea里面就是default.asp读取数据后的内容,直接Post提交处理,用FSO生成静态页面。
这个地方就有点问题了,生成的utf-8编码的页面是乱码……。检查了下自己的,测试和处理都是在一个页面里面完成的,这个页面是utf-8编码的,没有设涉及到数据库,据说读access数据库也会出现乱码的情况,但是我还没遇到,暂时不管。textarea里面的数据也是对的,纯文本,没有乱码。很郁闷,肯定是写入的时候出问题。
网上看了看,据说是要写入前转换下编码,抓了个函数。example:
| 以下是函数片段: Function BytesToBstr(body,Cset) dim objstream set objstream = Server.CreateObject("adodb.stream") objstream.Type = 1 objstream.Mode =3 objstream.Open objstream.Write body objstream.Position = 0 objstream.Type = 2 objstream.Charset = Cset BytesToBstr = objstream.ReadText objstream.Close set objstream = nothing End Function |
调用:BytesToBstr(body,"GB2312")
试了下,不好使,adodb.stream对象很少用,不知道怎么回事,但是在objstream.write body的时候报错了,此路不通……
乱码乱码,满世界的乱码,跟UTF-8打交道以来就经常碰到这种鬼事情,真是又爱又恨。
但是!!!注意,俺搞定了,方法非常简单。。。网上找的。。。实在是很无奈,就像php获取多个同一名字的input必须在input name后面加[]才能当作是数组传递一样。
example: set fsocreatefile = fso.createtextfile(server.mappth(file),true,1)
参数: -2:系统默认格式打开文件 -1:以Unicode格式打开文件 0:以ASCII格式打开文件
唉……真是简单....困扰了我那么久的问题,就在一个小小的附加参数上搞定了。。。
原载: No.1网络工作室 http://www.noonenet.cn/