ASP+FSO生成的網(wǎng)頁文件默認(rèn)編碼格式以及轉(zhuǎn)換成UTF-8編碼方法
更新時間:2009年11月26日 18:36:24 作者:
有一個客人的網(wǎng)站想做一個俄文版,前臺后臺,我統(tǒng)一用utf-8編碼,但通過數(shù)據(jù)庫生成的靜態(tài)俄文信息是亂碼。如果用GB2312顯示,通過數(shù)據(jù)庫生成的靜態(tài)俄文信息正確顯示, 但模板文件俄文是亂碼。
具體特征如下:
1、通過模板實(shí)現(xiàn)俄文正常。
2、通過后臺數(shù)據(jù)庫生成的靜態(tài)俄文信息,后臺顯示正常, 前臺亂碼。
3、英文正常。
和該主題相關(guān)的類似或不同表達(dá)
FSO寫UTF-8編碼文件
FSO怎么才能生成utf-8編碼的文件
FSO生成的文件默認(rèn)是什么編碼格式
如何轉(zhuǎn)換成UTF-8編碼
FSO生成靜態(tài)網(wǎng)頁的問題
ASP中用FSO生成文件代碼如下
function createfile(sfilename,scontent)
set fso=server.CreateObject("scripting.filesystemobject")
set f1=fso.opentextfile(sfilename,2,true,-1)
f1.write(scontent)
f1.close
set fso=nothing
end function
fso.opentextfile(sfilename,2,true,-1) 最后一個參數(shù)-1是指定編碼格式為Unicode,編碼格式為Unicode在網(wǎng)頁顯示的是UTF-16 little-endian。
OpenTextFile方法
創(chuàng)建指定文件并返回TextStream對象,該對象可用于讀或?qū)憚?chuàng)建的文件。
object.OpenTextFile(filename[, iomode[, create[, format]]])
參數(shù) object,必選項(xiàng)。應(yīng)為FileSystemObjec或Folder對象的名稱。 這里是fso。
filename,必選項(xiàng)。字符串表達(dá)式,指明要創(chuàng)建的文件。 這里是sfilename。
iomode,可選參數(shù),表示該文件是被用來讀、寫還是追加,默認(rèn)為1表示讀,2表示寫操作,8表示追加操作。
create,可選參數(shù),如果文件不存在是否創(chuàng)建,默認(rèn)為false,如果希望進(jìn)行創(chuàng)建,則設(shè)置為true。
format,參數(shù)可為下列設(shè)置之一,默認(rèn)為ASCII格式,并沒有我們要的utf-8:
TristateUseDefault -2 以系統(tǒng)默認(rèn)格式打開文件。
TristateTrue -1 以Unicode格式打開文件。
TristateFalse 0 以ASCII格式打開文件。
FSO的編碼屬性只有三種,系統(tǒng)默認(rèn),Unicode,ASCII,并沒有我們要的utf-8,所以一般中文系統(tǒng)上使用FSO組件生成的文件都是gb2312編碼格式。
解決方法一
GB2312編碼包含俄語字母,如果頁面設(shè)置為簡體中文GB2312, 那么俄文能夠正常顯示, 但由于中文默認(rèn)“宋體”顯示,在 “宋體”中俄語會顯示為全角字符,很難看,所以要采用外文字體,如“新羅馬”或“Arial”等。中國客戶那里可以交差, 但真正的俄國人瀏覽頁面時, 就需要下載和安裝中文,很不理想, 很可能導(dǎo)致放棄瀏覽網(wǎng)頁。
解決方法二
ASP由于是一種古老的語言,它的一些功能對UTF-8支持非常差。FSO不支持直接生成UTF-8格式的文件,因?yàn)樗鼰o法指定需要的文件格式,比如,想生成一個UTF-8格式的文件,使用常用的Scripting.FileSystemObject對象就不行。必須換一種思路,用Adodb.Stream,當(dāng)前一些blog程序就是這樣實(shí)現(xiàn)的,如zblog。
Scripting.FileSystemObject 對象創(chuàng)建文件的函數(shù),是下面方式:
FileSystemObject.CreateTextFile(filename[,overwrite[,unicode]])
其中的unicode屬性是這樣描述的:
可選項(xiàng)。Boolean值指明是否以Unicode或ASCII文件格式創(chuàng)建文件。如果以Unicode文件格式創(chuàng)建文件,則該值為True;如果以ASCII文件格式創(chuàng)建文件,則該值為False。如果省略此部分,則假定創(chuàng)建ASCII文件。
鮮然,無法用這個函數(shù)來創(chuàng)建UTF-8格式文件。
使用ADODB.Stream對象,使用方法見下面:
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"
.Position = objStream.Size
.WriteText=str
.SaveToFile server.mappath("/sitemap.xml"),2
.Close
End With
Set objStream = Nothing
附錄:ASCII、Unicode、UTF-8介紹
ASCII是一種字符集,包括大小寫的英文字母、數(shù)字、控制字符等,它用一個字節(jié)表示,范圍是0-127。
由于ASCII表示的字符非常有限,各個國家或者地區(qū)在此基礎(chǔ)上提出了自己的字符集,比如在中國應(yīng)用非常廣泛的GB2312,它為漢字提供了編碼,用兩個字節(jié)表示。
這些字符集之間互不兼容,相同的數(shù)字可能表示不同的字符,為信息交流帶來了麻煩。
Unicode是一種字符集,它將世界上的所有字符映射成一個唯一的數(shù)字(code point),比如字母a對應(yīng)的數(shù)字0x0041。目前Unicode還處于發(fā)展中,它所包容的字符越來越多。
在將Unicode表示的字符進(jìn)行存儲時,還需要一定的編碼方式,比如UCS-2,它用兩個字節(jié)來表示Unicode編碼的字符。而UTF-8是Unicode字符集的另外一種編碼方式,它是變長度的,最多6個字節(jié),小于127的字符用一個字節(jié)表示,與ASCII字符集的結(jié)果一樣,因而具有非常好的兼容性,ASCII編碼下的英語文本不需要修改就可以當(dāng)作UTF-8編碼進(jìn)行處理,應(yīng)用非常廣泛。
1、通過模板實(shí)現(xiàn)俄文正常。
2、通過后臺數(shù)據(jù)庫生成的靜態(tài)俄文信息,后臺顯示正常, 前臺亂碼。
3、英文正常。
和該主題相關(guān)的類似或不同表達(dá)
FSO寫UTF-8編碼文件
FSO怎么才能生成utf-8編碼的文件
FSO生成的文件默認(rèn)是什么編碼格式
如何轉(zhuǎn)換成UTF-8編碼
FSO生成靜態(tài)網(wǎng)頁的問題
ASP中用FSO生成文件代碼如下
復(fù)制代碼 代碼如下:
function createfile(sfilename,scontent)
set fso=server.CreateObject("scripting.filesystemobject")
set f1=fso.opentextfile(sfilename,2,true,-1)
f1.write(scontent)
f1.close
set fso=nothing
end function
fso.opentextfile(sfilename,2,true,-1) 最后一個參數(shù)-1是指定編碼格式為Unicode,編碼格式為Unicode在網(wǎng)頁顯示的是UTF-16 little-endian。
OpenTextFile方法
創(chuàng)建指定文件并返回TextStream對象,該對象可用于讀或?qū)憚?chuàng)建的文件。
object.OpenTextFile(filename[, iomode[, create[, format]]])
參數(shù) object,必選項(xiàng)。應(yīng)為FileSystemObjec或Folder對象的名稱。 這里是fso。
filename,必選項(xiàng)。字符串表達(dá)式,指明要創(chuàng)建的文件。 這里是sfilename。
iomode,可選參數(shù),表示該文件是被用來讀、寫還是追加,默認(rèn)為1表示讀,2表示寫操作,8表示追加操作。
create,可選參數(shù),如果文件不存在是否創(chuàng)建,默認(rèn)為false,如果希望進(jìn)行創(chuàng)建,則設(shè)置為true。
format,參數(shù)可為下列設(shè)置之一,默認(rèn)為ASCII格式,并沒有我們要的utf-8:
TristateUseDefault -2 以系統(tǒng)默認(rèn)格式打開文件。
TristateTrue -1 以Unicode格式打開文件。
TristateFalse 0 以ASCII格式打開文件。
FSO的編碼屬性只有三種,系統(tǒng)默認(rèn),Unicode,ASCII,并沒有我們要的utf-8,所以一般中文系統(tǒng)上使用FSO組件生成的文件都是gb2312編碼格式。
解決方法一
GB2312編碼包含俄語字母,如果頁面設(shè)置為簡體中文GB2312, 那么俄文能夠正常顯示, 但由于中文默認(rèn)“宋體”顯示,在 “宋體”中俄語會顯示為全角字符,很難看,所以要采用外文字體,如“新羅馬”或“Arial”等。中國客戶那里可以交差, 但真正的俄國人瀏覽頁面時, 就需要下載和安裝中文,很不理想, 很可能導(dǎo)致放棄瀏覽網(wǎng)頁。
解決方法二
ASP由于是一種古老的語言,它的一些功能對UTF-8支持非常差。FSO不支持直接生成UTF-8格式的文件,因?yàn)樗鼰o法指定需要的文件格式,比如,想生成一個UTF-8格式的文件,使用常用的Scripting.FileSystemObject對象就不行。必須換一種思路,用Adodb.Stream,當(dāng)前一些blog程序就是這樣實(shí)現(xiàn)的,如zblog。
Scripting.FileSystemObject 對象創(chuàng)建文件的函數(shù),是下面方式:
FileSystemObject.CreateTextFile(filename[,overwrite[,unicode]])
其中的unicode屬性是這樣描述的:
可選項(xiàng)。Boolean值指明是否以Unicode或ASCII文件格式創(chuàng)建文件。如果以Unicode文件格式創(chuàng)建文件,則該值為True;如果以ASCII文件格式創(chuàng)建文件,則該值為False。如果省略此部分,則假定創(chuàng)建ASCII文件。
鮮然,無法用這個函數(shù)來創(chuàng)建UTF-8格式文件。
使用ADODB.Stream對象,使用方法見下面:
復(fù)制代碼 代碼如下:
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"
.Position = objStream.Size
.WriteText=str
.SaveToFile server.mappath("/sitemap.xml"),2
.Close
End With
Set objStream = Nothing
附錄:ASCII、Unicode、UTF-8介紹
ASCII是一種字符集,包括大小寫的英文字母、數(shù)字、控制字符等,它用一個字節(jié)表示,范圍是0-127。
由于ASCII表示的字符非常有限,各個國家或者地區(qū)在此基礎(chǔ)上提出了自己的字符集,比如在中國應(yīng)用非常廣泛的GB2312,它為漢字提供了編碼,用兩個字節(jié)表示。
這些字符集之間互不兼容,相同的數(shù)字可能表示不同的字符,為信息交流帶來了麻煩。
Unicode是一種字符集,它將世界上的所有字符映射成一個唯一的數(shù)字(code point),比如字母a對應(yīng)的數(shù)字0x0041。目前Unicode還處于發(fā)展中,它所包容的字符越來越多。
在將Unicode表示的字符進(jìn)行存儲時,還需要一定的編碼方式,比如UCS-2,它用兩個字節(jié)來表示Unicode編碼的字符。而UTF-8是Unicode字符集的另外一種編碼方式,它是變長度的,最多6個字節(jié),小于127的字符用一個字節(jié)表示,與ASCII字符集的結(jié)果一樣,因而具有非常好的兼容性,ASCII編碼下的英語文本不需要修改就可以當(dāng)作UTF-8編碼進(jìn)行處理,應(yīng)用非常廣泛。
您可能感興趣的文章:
- php 判斷網(wǎng)頁是否是utf8編碼的方法
- js 顯示base64編碼的二進(jìn)制流網(wǎng)頁圖片
- Base64編碼加密JS代碼網(wǎng)頁版
- 多種語言(big5\gbk\gb2312\utf8\Shift_JIS\iso8859-1)的網(wǎng)頁編碼切換解決方案歸納
- ASP UTF-8編碼生成靜態(tài)網(wǎng)頁的函數(shù)
- asp.net HttpWebRequest自動識別網(wǎng)頁編碼
- asp.net 網(wǎng)頁編碼自動識別代碼
- vbs或asp采集文章時網(wǎng)頁編碼問題
- 網(wǎng)頁語言編碼及asp亂碼問題解決方案
- 判斷網(wǎng)頁編碼的方法python版
相關(guān)文章
Insert Date and Time into Access
Insert Date and Time into Access...2007-04-04asp下實(shí)現(xiàn)IP限制函數(shù)代碼
asp下實(shí)現(xiàn)IP限制函數(shù)代碼...2007-11-11SQLServer ADODB.Recordset 錯誤“800a0e78”,對象關(guān)閉時,不允許操作
今天在幫一個客戶維護(hù)網(wǎng)站的時候,運(yùn)行asp提示ADODB.Recordset 錯誤“800a0e78”,對象關(guān)閉時,不允許操作,原來是asp與sqlserver的連接出問題導(dǎo)致2014-07-07利用ASP實(shí)現(xiàn)在線生成電話圖片效果腳本附演示
利用ASP實(shí)現(xiàn)在線生成電話圖片效果腳本附演示...2007-11-11