ASP網(wǎng)站程序動(dòng)態(tài)生成靜態(tài)HTML文件時(shí)文件編碼GB2312與UTF-8編碼互轉(zhuǎn)問題
我們?cè)陂_發(fā)網(wǎng)站時(shí),經(jīng)常會(huì)遇到中文網(wǎng)站打開會(huì)亂碼現(xiàn)象,主要原因在于網(wǎng)站開發(fā)時(shí)編碼使用問題,中文網(wǎng)站編碼通常使用:GB2312文件編碼,英文及其它語言編碼通常使用UTF-8編碼;我們?nèi)绻?a target="_blank">網(wǎng)站建設(shè)時(shí),各頁面之間編碼不統(tǒng)一,就會(huì)造成切換頁面時(shí)出現(xiàn)中文亂碼現(xiàn)象.
如果一個(gè)網(wǎng)站有中英文,建議在網(wǎng)站建設(shè)時(shí),統(tǒng)一采用國(guó)際通用UTF-8文件編碼.下面我們重點(diǎn)講一下ASP程序動(dòng)態(tài)生成HTML靜態(tài)文件時(shí)將文件編碼統(tǒng)一為UTF-8編碼實(shí)現(xiàn)方式:
一般我們?cè)贏SP環(huán)境下,運(yùn)行動(dòng)生靜操作時(shí)都用到的是FSO,他是專門對(duì)文件進(jìn)行操作的一個(gè)組件,他FSO的編碼屬性只有三種,系統(tǒng)默 認(rèn),Unicode,ASCII,并沒有我們要的UTF-8,所以一般中文系統(tǒng)上使用FSO組件生成的文件都是gb2312格式的了,即便您在網(wǎng)頁內(nèi)寫上 charset="UTF-8"也是沒用的
要生成UFT-8格式的文件,ASP環(huán)境下我們用 ADODB.Stream代替FSO讀寫UTF-8文件,因 為,ADODB.Stream,有一個(gè)CharSet 屬性,可以讓您定義要打開或要寫入的文件的編碼類型,這樣一來,ADODB.Stream不僅僅是 只能讀取或?qū)懭險(xiǎn)TF-8的文件,基本上什么格式的文件都可以操作了,當(dāng)然當(dāng)前對(duì)我們來說比較有用的就是寫為UTF-8格式的文件,
下邊這個(gè)函數(shù)可以實(shí)現(xiàn)這些功能:
*****************************************
函數(shù)參數(shù)說明:
FileUrl:生成HTML文件路徑
STR:生成HTML文件內(nèi)容
CharSet:生成HTML時(shí)文件編碼如:"UTF-8"
*****************************************Function WriteToFile (FileUrl, Str, CharSet)
Set stm = CreateObject("Adodb.Stream")
stm.Type = 2
stm.mode = 3
stm.charset = CharSet
stm.Open
stm.WriteText Str
stm.SaveToFile FileUrl, 2
stm.flush
stm.Close
Set stm = Nothing
End Function
其中charset可以選擇的項(xiàng)有很多,您可以在這找到您想要的:網(wǎng)頁編碼大全 CodePage CharSet 中英文顯示名稱,這個(gè)函數(shù)的功能基本上與您的動(dòng)生靜使用的FSO函數(shù)差不多,只是多了一個(gè)選擇字符編碼的屬性,當(dāng)然您也可以把這個(gè)屬性直接寫到函數(shù)里,不過這樣寫比較好,以后如果要用別的轉(zhuǎn)為別的格式,這個(gè)函數(shù)還可以用的上。
關(guān)于ASP網(wǎng)站處理UTF-8編碼文件時(shí)中文字符截取函數(shù),以及取字符串長(zhǎng)度函數(shù),請(qǐng)查詢: ASP網(wǎng)站UTF-8編碼/GB2312編碼中字符串截取函數(shù)和獲取長(zhǎng)度函數(shù) 一文.