這幾天,有一位新申請的客戶使用的asp程式是簡體編碼gb2312的格式,在運行後發現網頁編碼有些問題,有些會是亂碼,有些則正常顯示。


本室的工程師認為這是作業系統預設編碼與程式編碼不同所致,特別是該asp程式是用以下的檔案物件


<%
Set fso = Server.CreateObject("Scripting.FileSystemObject")


Set fout = fso.CreateTextFile(server.mappath("../index.htm"))
fout.Write template
fout.close


%>


使用CreateTextFile方法來創建的物件會有一個問題,原型為:


object.CreateTextFile(filename[, overwrite[, unicode]])


若overwrite, unicode二個不設的話,就會用預設值,


預設值 overwrite:True (允許覆蓋已存在的檔案),且 unicode:False(不使用Unicode方式建立)


由上可知,要使用gb2312寫檔是不可能的,就是要換別的方法adodb.stream,如下:


<%
response.write template
set stm=server.CreateObject("adodb.stream")
 stm.Type=2
 stm.mode=3
 stm.charset="gb2312"
 stm.open
 stm.WriteText template
 stm.SaveToFile server.MapPath("../index.htm"),2
 stm.flush
 stm.Close
set stm=nothing
 %>


另一種寫法:


<%
 Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "gb2312"
.Position = objStream.Size
.WriteText=template
.SaveToFile server.mappath("../index.htm"),2
.Close
End With
Set objStream = Nothing


Set rs=Nothing
%>

創作者介紹
創作者 NetPC虛擬主機 的頭像
NetPC虛擬主機

NetPC虛擬主機的部落格

NetPC虛擬主機 發表在 痞客邦 留言(0) 人氣()