asp 读取 utf-8格式文档并生成utf-8格式文档的乱码问题

2018-09-06 11:45

阅读:375

  今天在对搜索吧的程序进行utf-8修正时,发现生成的utf-8格式文档存在着乱码,原来文件

create_html.asp代码如下:

复制代码 代码如下:
<%@LANGUAGE=VBSCRIPTCODEPAGE=65001%>
<%
setobjrs=server.createObject(Scripting.FileSystemObject)
conn=server.mappath(example.xml)
setStream=objrs.opentextfile(conn,1,true,-2)
content=stream.readall
Response.Write(content)
stream.close
%>

这段代码要实现的功能是:从example.xml(utf-8格式)中读取文字包括中文,然后输出,但是每次输出却都是乱码,这个问题着实困扰了我很久,后来还是在经典论坛“小韩”“萧萧小雨”的帮助下解决了,真是感谢他们了。

或许我一开始就是错误的,现在正确的代码修改后如下,用了“萧萧小雨”给的代码,包括了用读取的内容生成新的utf-8格式文档。详细代码如下:

复制代码 代码如下:
<%@LANGUAGE=VBSCRIPTCODEPAGE=65001%>
<%Response.Charset=UTF-8%>
<%
申明变量
dimread_path,write_paht,content
----读取文件内容------------------------
FunctionReadTextFile(filePath,CharSet)
dimstm
setstm=Server.CreateObject(adodb.stream)
stm.Type=1adTypeBinary,按二进制数据读入
stm.Mode=3adModeReadWrite,这里只能用3用其他会出错
stm.Open
stm.LoadFromFilefilePath
stm.Position=0把指针移回起点
stm.Type=2文本数据
stm.Charset=CharSet
ReadTextFile=stm.ReadText
stm.Close
setstm=nothing
EndFunction

----写入文件------------------------
SubWriteTextFile(filePath,fileContent,CharSet)
dimstm
setstm=Server.CreateObject(adodb.stream)
stm.Type=2adTypeText,文本数据
stm.Mode=3adModeReadWrite,读取写入,此参数用2则报错
stm.Charset=CharSet
stm.Open
stm.WriteTextfileContent
stm.SaveToFilefilePath,2adSaveCreateOverWrite,文件存在则覆盖
stm.Flush
stm.Close
setstm=nothing
EndSub
要读取的文件路径
read_path=Server.MapPath(example.xml)
要写入的文件路径
write_path=Server.MapPath(example.asp)
读取的文件内容
content=ReadTextFile(read_path,utf-8)
输出读取的文件
Response.Write(content)
开始写入
callWriteTextFile(write_path,content,utf-8)
%>


这段代码相当实用,对于生成utf-8格式静态页十分有用,一些必要的解释我也注明了,需要注意的是:

复制代码 代码如下:
<%@LANGUAGE=VBSCRIPTCODEPAGE=65001%>
<%Response.Charset=UTF-8%>
你的页面不要忘记这几行代码了,否则你读取后输出的内容是乱码。


评论


亲,登录后才可以留言!