欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-11 13:18:27
今天在对搜索吧的程序进行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" %>  
你的页面不要忘记这几行代码了,否则你读取后输出的内容是乱码。