一般做英文网站或者你要写一个英文的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
©2003-2009