asp 读取 utf-8格式文档并生成utf-8格式文档的乱码问题
程序员文章站
2023-10-27 14:00:10
今天在对搜索吧的程序进行utf-8修正时,发现生成的utf-8格式文档存在着乱码,原来文件 create_html.asp代码如下: 复制代码 代码如下:<...
今天在对搜索吧的程序进行utf-8修正时,发现生成的utf-8格式文档存在着乱码,原来文件
create_html.asp代码如下:
<%@language="vbscript" codepage="65001"%>
<%
set objrs=server.createobject("scripting.filesystemobject")
conn=server.mappath("example.xml")
set stream=objrs.opentextfile(conn,1,true,-2)
content=stream.readall
response.write(content)
stream.close
%>
这段代码要实现的功能是:从example.xml(utf-8格式)中读取文字包括中文,然后输出,但是每次输出却都是乱码,这个问题着实困扰了我很久,后来还是在经典论坛“小韩”“萧萧小雨 ”的帮助下解决了,真是感谢他们了。
或许我一开始就是错误的,现在正确的代码修改后如下,用了“萧萧小雨”给的代码,包括了用读取的内容生成新的utf-8格式文档。详细代码如下:
<%@language="vbscript" codepage="65001"%>
<% response.codepage=65001%>
<% response.charset="utf-8" %>
<%
'申明变量
dim read_path,write_paht,content
'----读取文件内容------------------------
function readtextfile(filepath,charset)
dim stm
set stm=server.createobject("adodb.stream")
stm.type=1 'adtypebinary,按二进制数据读入
stm.mode=3 'admodereadwrite ,这里只能用3用其他会出错
stm.open
stm.loadfromfile filepath
stm.position=0 '把指针移回起点
stm.type=2 '文本数据
stm.charset=charset
readtextfile = stm.readtext
stm.close
set stm=nothing
end function
'----写入文件------------------------
sub writetextfile(filepath,filecontent,charset)
dim stm
set stm=server.createobject("adodb.stream")
stm.type=2 'adtypetext,文本数据
stm.mode=3 'admodereadwrite,读取写入,此参数用2则报错
stm.charset=charset
stm.open
stm.writetext filecontent
stm.savetofile filepath,2 'adsavecreateoverwrite,文件存在则覆盖
stm.flush
stm.close
set stm=nothing
end sub
'要读取的文件路径
read_path = server.mappath("example.xml")
'要写入的文件路径
write_path = server.mappath("example.asp")
'读取的文件内容
content = readtextfile(read_path,"utf-8")
'输出读取的文件
response.write(content)
'开始写入
call writetextfile(write_path,content,"utf-8")
%>
这段代码相当实用,对于生成utf-8格式静态页十分有用,一些必要的解释我也注明了,需要注意的是:
<%@language="vbscript" codepage="65001"%>
<% response.codepage=65001%>
<% response.charset="utf-8" %>
你的页面不要忘记这几行代码了,否则你读取后输出的内容是乱码。
create_html.asp代码如下:
复制代码 代码如下:
<%@language="vbscript" codepage="65001"%>
<%
set objrs=server.createobject("scripting.filesystemobject")
conn=server.mappath("example.xml")
set stream=objrs.opentextfile(conn,1,true,-2)
content=stream.readall
response.write(content)
stream.close
%>
这段代码要实现的功能是:从example.xml(utf-8格式)中读取文字包括中文,然后输出,但是每次输出却都是乱码,这个问题着实困扰了我很久,后来还是在经典论坛“小韩”“萧萧小雨 ”的帮助下解决了,真是感谢他们了。
或许我一开始就是错误的,现在正确的代码修改后如下,用了“萧萧小雨”给的代码,包括了用读取的内容生成新的utf-8格式文档。详细代码如下:
复制代码 代码如下:
<%@language="vbscript" codepage="65001"%>
<% response.codepage=65001%>
<% response.charset="utf-8" %>
<%
'申明变量
dim read_path,write_paht,content
'----读取文件内容------------------------
function readtextfile(filepath,charset)
dim stm
set stm=server.createobject("adodb.stream")
stm.type=1 'adtypebinary,按二进制数据读入
stm.mode=3 'admodereadwrite ,这里只能用3用其他会出错
stm.open
stm.loadfromfile filepath
stm.position=0 '把指针移回起点
stm.type=2 '文本数据
stm.charset=charset
readtextfile = stm.readtext
stm.close
set stm=nothing
end function
'----写入文件------------------------
sub writetextfile(filepath,filecontent,charset)
dim stm
set stm=server.createobject("adodb.stream")
stm.type=2 'adtypetext,文本数据
stm.mode=3 'admodereadwrite,读取写入,此参数用2则报错
stm.charset=charset
stm.open
stm.writetext filecontent
stm.savetofile filepath,2 'adsavecreateoverwrite,文件存在则覆盖
stm.flush
stm.close
set stm=nothing
end sub
'要读取的文件路径
read_path = server.mappath("example.xml")
'要写入的文件路径
write_path = server.mappath("example.asp")
'读取的文件内容
content = readtextfile(read_path,"utf-8")
'输出读取的文件
response.write(content)
'开始写入
call writetextfile(write_path,content,"utf-8")
%>
这段代码相当实用,对于生成utf-8格式静态页十分有用,一些必要的解释我也注明了,需要注意的是:
复制代码 代码如下:
<%@language="vbscript" codepage="65001"%>
<% response.codepage=65001%>
<% response.charset="utf-8" %>
上一篇: 用ASP生成UTF-8网页文件的两种方法
下一篇: IOS开发(63)之GCD执行延迟操作