這幾天,有一位新申請的客戶使用的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
%>
留言列表