返回首页

胡贤文:如何用asp编写UTF-8编码的生成静态的程序

时间:2009-03-06 11:07来源: 作者:小贤 点击:
  

一般做英文网站或者你要写一个英文的WEB程序,就不适合用GB2312编码,在英文操作系统上会显示乱码。

UTF-8是国际通用的语言编码,在任何语言的操作系统上都能正常的显示中文、英文、日文、韩文、阿拉伯文......

做英文站就是为了面向国际,当然要采用UTF-8编码。

编写一个生成静态的程序很容易,通常生成静态都用到 FSO 。通过服务器的FSO组件读取模板文件,然后用数据替换掉模板中的标签;再采用FSO把替换后的数据写入指定的静态网页中。 在9959网店系统的英文版开发中,我就遇到了生成UTF-8编码的网页总是空白的问题。后来通过搜索才知道FSO根本就不支持UTF-8编码文本的读取和写入。这时就得用到adodb.stream组件。

adodb.stream可以读取和写入UTF-8编码文本的文件。

下面分别给出adodb.stream读取和写入文本的函数。

adodb读utf-8格式文本
function ReadFromUTF (TempString,CharSet)    胡贤文注:TempString要读取的模板文件路径; Charset是编码
    dim str
    set stm=server.CreateObject("adodb.stream")
    stm.Type=2 
    stm.mode=3
    stm.charset=CharSet
    stm.open
    stm.loadfromfile server.MapPath(TempString)
    str=stm.readtext
    stm.Close
    set stm=nothing
    ReadFromUTF=str
end function

这个函数的使用方法是:  

dim TEMP

TEMP=ReadFromUTF("skins/default/index.htm","UTF-8")

TEMP就是从skins/default/index.htm 这个文件中读取出来的内容;

要注意的是:读取这个模板的时候用了"UTF-8"编码,所以模板文件index.htm必须是个UTF-8编码的文件,否则读取出来的是空白内容。

如何把一个GB2312的网页文件转换成UTF-8?

只要把网页文件用文本(记事本)打开,然后点另存,编码选择UTF-8 ,确定保存。

 接下来要替换掉内容中的标签:

TEMP = Replace(TEMP,"{%网页名称%}",webname) 

 

接下来最后一步,通过adodb.stream,把内容写入一个UTF-8编码的网页文件。

写入UTF-8格式文件
Sub WriteToUTF(FileUrl,Str,CharSet)  胡贤文注: FileUrl 是文件保存的文件名,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

举个例子:

Call WriteToUTF("/index.htm",TEMP,"UTF-8")

这样,就把刚才替换好了标签的内容以UTF-8编码写入到了 根目录的 index.htm这个文件里。

 

还有值得注意的是: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 这句代码要出现在您的网页<head></head>之间。

而asp文件最上方要包含  <%@language=vbscript codepage=65001 %>

 

生成 UTF-8 编码的静态文件就是这么简单,如果您在实际操作的时候遇到什么问题请联系胡贤文,邮箱: hu@xianwen.com

顶一下
(3)
75%
踩一下
(1)
25%
------分隔线----------------------------
最新评论
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
杂志下载
 

输入你的E-mail订阅

 
©2003-2009 电子商务指南 黑ICP备09098461号