ASP由於是一種古老的語言,它的一些功能對UTF-8支援非常差。
比如,你想產生一個UTF-8格式的檔案,使用常用的 scrīpting.FileSystemObject 對象就不行。
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 編碼進行處理,應用非常廣泛。