asp 讀取 utf-8格式文檔并生成utf-8格式文檔的亂碼問(wèn)題
更新時(shí)間:2007年07月20日 00:00:00 作者:
今天在對(duì)搜索吧的程序進(jìn)行utf-8修正時(shí),發(fā)現(xiàn)生成的utf-8格式文檔存在著亂碼,原來(lái)文件
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
%>
這段代碼要實(shí)現(xiàn)的功能是:從example.xml(utf-8格式)中讀取文字包括中文,然后輸出,但是每次輸出卻都是亂碼,這個(gè)問(wèn)題著實(shí)困擾了我很久,后來(lái)還是在經(jīng)典論壇“小韓”“蕭蕭小雨 ”的幫助下解決了,真是感謝他們了。
或許我一開始就是錯(cuò)誤的,現(xiàn)在正確的代碼修改后如下,用了“蕭蕭小雨”給的代碼,包括了用讀取的內(nèi)容生成新的utf-8格式文檔。詳細(xì)代碼如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Response.CodePage=65001%>
<% Response.Charset="UTF-8" %>
<%
'申明變量
dim read_path,write_paht,content
'----讀取文件內(nèi)容------------------------
Function ReadTextFile(filePath,CharSet)
dim stm
set stm=Server.CreateObject("adodb.stream")
stm.Type=1 'adTypeBinary,按二進(jìn)制數(shù)據(jù)讀入
stm.Mode=3 'adModeReadWrite ,這里只能用3用其他會(huì)出錯(cuò)
stm.Open
stm.LoadFromFile filePath
stm.Position=0 '把指針移回起點(diǎn)
stm.Type=2 '文本數(shù)據(jù)
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,文本數(shù)據(jù)
stm.Mode=3 'adModeReadWrite,讀取寫入,此參數(shù)用2則報(bào)錯(cuò)
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")
'讀取的文件內(nèi)容
content = ReadTextFile(read_path,"utf-8")
'輸出讀取的文件
Response.Write(content)
'開始寫入
call WriteTextFile(write_path,content,"utf-8")
%>
這段代碼相當(dāng)實(shí)用,對(duì)于生成utf-8格式靜態(tài)頁(yè)十分有用,一些必要的解釋我也注明了,需要注意的是:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Response.CodePage=65001%>
<% Response.Charset="UTF-8" %>
你的頁(yè)面不要忘記這幾行代碼了,否則你讀取后輸出的內(nèi)容是亂碼。
create_html.asp代碼如下:
復(fù)制代碼 代碼如下:
<%@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
%>
這段代碼要實(shí)現(xiàn)的功能是:從example.xml(utf-8格式)中讀取文字包括中文,然后輸出,但是每次輸出卻都是亂碼,這個(gè)問(wèn)題著實(shí)困擾了我很久,后來(lái)還是在經(jīng)典論壇“小韓”“蕭蕭小雨 ”的幫助下解決了,真是感謝他們了。
或許我一開始就是錯(cuò)誤的,現(xiàn)在正確的代碼修改后如下,用了“蕭蕭小雨”給的代碼,包括了用讀取的內(nèi)容生成新的utf-8格式文檔。詳細(xì)代碼如下:
復(fù)制代碼 代碼如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Response.CodePage=65001%>
<% Response.Charset="UTF-8" %>
<%
'申明變量
dim read_path,write_paht,content
'----讀取文件內(nèi)容------------------------
Function ReadTextFile(filePath,CharSet)
dim stm
set stm=Server.CreateObject("adodb.stream")
stm.Type=1 'adTypeBinary,按二進(jìn)制數(shù)據(jù)讀入
stm.Mode=3 'adModeReadWrite ,這里只能用3用其他會(huì)出錯(cuò)
stm.Open
stm.LoadFromFile filePath
stm.Position=0 '把指針移回起點(diǎn)
stm.Type=2 '文本數(shù)據(jù)
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,文本數(shù)據(jù)
stm.Mode=3 'adModeReadWrite,讀取寫入,此參數(shù)用2則報(bào)錯(cuò)
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")
'讀取的文件內(nèi)容
content = ReadTextFile(read_path,"utf-8")
'輸出讀取的文件
Response.Write(content)
'開始寫入
call WriteTextFile(write_path,content,"utf-8")
%>
這段代碼相當(dāng)實(shí)用,對(duì)于生成utf-8格式靜態(tài)頁(yè)十分有用,一些必要的解釋我也注明了,需要注意的是:
復(fù)制代碼 代碼如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Response.CodePage=65001%>
<% Response.Charset="UTF-8" %>
相關(guān)文章
asp 實(shí)現(xiàn)對(duì)SQL注入危險(xiǎn)字符進(jìn)行重編碼處理的函數(shù)
asp 實(shí)現(xiàn)對(duì)SQL注入危險(xiǎn)字符進(jìn)行重編碼處理的函數(shù)...2007-08-08
ASP讀取日期單日期自動(dòng)補(bǔ)零函數(shù)代碼
fillzero 函數(shù):月和日這兩個(gè)日期如果是單數(shù)的話前面補(bǔ)0。如2011年3月3日一般格式是2011-3-3通過(guò)函數(shù)轉(zhuǎn)化成2011-03-03這樣的格式。2011-01-01
asp ADO GetString函數(shù)與用GetString來(lái)提高ASP的速度
沒(méi)想到asp下有g(shù)etstring這個(gè)東西,看樣子不熟悉這塊啊,以后考慮用這個(gè),應(yīng)該不錯(cuò),另外還有g(shù)etrows等,都是asp下提高性能不錯(cuò)的函數(shù)。2007-12-12
ASP中Utf-8與Gb2312編碼轉(zhuǎn)換亂碼問(wèn)題的解決方法 頁(yè)面編碼聲明
ASP程序在同一個(gè)站點(diǎn)中,如果有UTF-8編碼的程序,又有GB2312編碼的程序時(shí),在瀏覽UTF-8編碼的頁(yè)面后,再瀏覽當(dāng)前網(wǎng)站GB2312的頁(yè)面,GB2312編碼的頁(yè)面就會(huì)出現(xiàn)亂碼2012-02-02
JoinChar 向地址中加入 ? 或 & 用于實(shí)現(xiàn)傳參
JoinChar 向地址中加入 ? 或 & 用于實(shí)現(xiàn)傳參...2007-09-09

