注意:這裡說的ASP
ASP由於它的一些功能對UTF-8支持非常差。
比如,你想生成一個UTF-8格式的文件,使用常用的Scripting.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 編碼進行處理,應用非常廣泛。