一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP教程 - ASP+FSO生成的網頁文件默認編碼格式以及轉換成UTF-8編碼方法

ASP+FSO生成的網頁文件默認編碼格式以及轉換成UTF-8編碼方法

2019-09-07 15:14asp之家 ASP教程

有一個客人的網站想做一個俄文版,前臺后臺,我統一用utf-8編碼,但通過數據庫生成的靜態俄文信息是亂碼。如果用GB2312顯示,通過數據庫生成的靜態俄文信息正確顯示, 但模板文件俄文是亂碼。

具體特征如下: 
1、通過模板實現俄文正常。 
2、通過后臺數據庫生成的靜態俄文信息,后臺顯示正常, 前臺亂碼。 
3、英文正常。 
和該主題相關的類似或不同表達 
FSO寫UTF-8編碼文件 
FSO怎么才能生成utf-8編碼的文件 
FSO生成的文件默認是什么編碼格式 
如何轉換成UTF-8編碼 
FSO生成靜態網頁的問題 
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) 最后一個參數-1是指定編碼格式為Unicode,編碼格式為Unicode在網頁顯示的是UTF-16 little-endian。 
OpenTextFile方法 
創建指定文件并返回TextStream對象,該對象可用于讀或寫創建的文件。 
object.OpenTextFile(filename[, iomode[, create[, format]]]) 
參數 object,必選項。應為FileSystemObjec或Folder對象的名稱。 這里是fso。 
filename,必選項。字符串表達式,指明要創建的文件。 這里是sfilename。 
iomode,可選參數,表示該文件是被用來讀、寫還是追加,默認為1表示讀,2表示寫操作,8表示追加操作。 
create,可選參數,如果文件不存在是否創建,默認為false,如果希望進行創建,則設置為true。 
format,參數可為下列設置之一,默認為ASCII格式,并沒有我們要的utf-8: 
TristateUseDefault -2 以系統默認格式打開文件。 
TristateTrue -1 以Unicode格式打開文件。 
TristateFalse 0 以ASCII格式打開文件。 
FSO的編碼屬性只有三種,系統默認,Unicode,ASCII,并沒有我們要的utf-8,所以一般中文系統上使用FSO組件生成的文件都是gb2312編碼格式。 
解決方法一 
GB2312編碼包含俄語字母,如果頁面設置為簡體中文GB2312, 那么俄文能夠正常顯示, 但由于中文默認“宋體”顯示,在 “宋體”中俄語會顯示為全角字符,很難看,所以要采用外文字體,如“新羅馬”或“Arial”等。中國客戶那里可以交差, 但真正的俄國人瀏覽頁面時, 就需要下載和安裝中文,很不理想, 很可能導致放棄瀏覽網頁。 
解決方法二 
ASP由于是一種古老的語言,它的一些功能對UTF-8支持非常差。FSO不支持直接生成UTF-8格式的文件,因為它無法指定需要的文件格式,比如,想生成一個UTF-8格式的文件,使用常用的Scripting.FileSystemObject對象就不行。必須換一種思路,用Adodb.Stream,當前一些blog程序就是這樣實現的,如zblog。 
Scripting.FileSystemObject 對象創建文件的函數,是下面方式: 
FileSystemObject.CreateTextFile(filename[,overwrite[,unicode]]) 
其中的unicode屬性是這樣描述的: 
可選項。Boolean值指明是否以Unicode或ASCII文件格式創建文件。如果以Unicode文件格式創建文件,則該值為True;如果以ASCII文件格式創建文件,則該值為False。如果省略此部分,則假定創建ASCII文件。 
鮮然,無法用這個函數來創建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是一種字符集,包括大小寫的英文字母、數字、控制字符等,它用一個字節表示,范圍是0-127。 
由于ASCII表示的字符非常有限,各個國家或者地區在此基礎上提出了自己的字符集,比如在中國應用非常廣泛的GB2312,它為漢字提供了編碼,用兩個字節表示。 
這些字符集之間互不兼容,相同的數字可能表示不同的字符,為信息交流帶來了麻煩。 
Unicode是一種字符集,它將世界上的所有字符映射成一個唯一的數字(code point),比如字母a對應的數字0x0041。目前Unicode還處于發展中,它所包容的字符越來越多。 
在將Unicode表示的字符進行存儲時,還需要一定的編碼方式,比如UCS-2,它用兩個字節來表示Unicode編碼的字符。而UTF-8是Unicode字符集的另外一種編碼方式,它是變長度的,最多6個字節,小于127的字符用一個字節表示,與ASCII字符集的結果一樣,因而具有非常好的兼容性,ASCII編碼下的英語文本不需要修改就可以當作UTF-8編碼進行處理,應用非常廣泛。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 全黄一级裸片视频免费 | 狠狠色综合久久婷婷色天使 | 国产99在线a视频 | 日本无遮挡拍拍拍凤凰 | 亚洲欧美日韩国产精品一区 | 成年人在线观看视频免费 | 热99re久久精品国产 | 日本中文字幕永久在线 | 大胆暴露亚洲美女xxxx | 99热热99 | gayrb免费漫画入口 | 国产91无毒不卡在线观看 | 污黄在线观看 | 毛片区 | 4虎影视国产在线观看精品 4s4s4s4s色大众影视 | 男女男精品视频网站 | 日女人免费视频 | 国产男女爱视频在线观看 | 96免费精品视频在线 | 亚洲冬月枫中文字幕在线看 | 日本一道一区二区免费看 | 欧美在线视频免费播放 | 99人中文字幕亚洲区 | 扒开双腿猛进入爽爽视频ai | 视频一区二区三区在线 | 91污无限制破解安卓2021 | 国色天香社区视频在线观看免费完整版 | 欧美精品久久久亚洲 | 超级碰在线视频 | 人人爱天天做夜夜爽88 | 性印度freehd | 亚洲天堂免费看 | 第一国内永久免费福利视频 | 奶茶视频官网免费 | 久久99re2在线视频精品 | 日本视频在线免费看 | 亚洲男人天堂久久 | 日韩夫妻性生活 | 我们中文在线观看免费完整版 | 国产成人精品本亚洲 | tube69中国露脸 |