ASP 讀取 UTF-8 編碼的文字檔案
想要在 ASP 讀取文字檔案,可以使用 Scripting.FileSystemObject 或 ADODB.Stream 物件,但是如果想要讀取的檔案是 UTF-8 編碼的話,只能使用 ADODB.Stream。
Scripting.FileSystemObject
Dim filePath : filePath = Server.MapPath("/readme.txt")
Dim fso : Set fso = Server.CreateObject("Scripting.FileSystemObject")
Dim textFile : Set textFile = fso.OpenTextFile(filePath, 1)
'讀取 5 個字元
Response.Write(textFile.Read(5))
'讀取一行
Response.Write(textFile.ReadLine)
'讀取全部
Response.Write(textFile.ReadAll)
'一行一行讀取,直到檔案結尾
Do Until textFile.AtEndOfStream
Response.Write(textFile.ReadLine)
Loop
textFile.Close
Set textFile = Nothing
Set fso = Nothing
使用 FileSystemObject 的 OpenTextFile
方法來開啟文字串流,會傳回 TextStream 物件,之後可以用 Read
, ReadLine
, ReadAll
方法來讀取資料,雖然能讀取 Unicode 編碼的檔案,但是卻無法讀取 UTF-8。
語法:fso.OpenTextFile(filename[, iomode[, create[, format]]])
filename
: 必要,欲開啟的檔案路徑。iomode
: 選擇性,檔案開啟模式。
1 = ForReading : 以唯讀方式開啟,無法寫入資料到檔案。
2 = ForWriting : 開啟檔案供寫入。
8 = ForAppending : 開啟檔案供寫入,資料會從檔案結尾寫入。create
: 選擇性,檔案不存在時的動作。
True : 檔案不存在時自動建立。
False : 檔案不存在不會自動建立,預設值。format
: 選擇性,指定開啟格式。
-2 = TristateUseDefault : 使用系統預設值開啟。
-1 = TristateTrue : 以 Unicode 開啟。
0 = TristateFalse : 以 ASCII 開啟。
ADODB.Stream
Dim filePath : filePath = Server.MapPath("/readme.txt")
Dim stream : Set stream = Server.CreateObject("ADODB.Stream")
'設定為文字資料
stream.Type = 2
'設定為UTF-8編碼
stream.Charset = "UTF-8"
stream.Open
'從指定的位置載入檔案
stream.LoadFromFile filePath
'讀取資料
Response.Write(stream.ReadText)
stream.Close
Set stream = Nothing
使用 ADODB.Stream 的 LoadFromFile
方法載入檔案,並設定 Charset
編碼,就可以用 ReadText
方法讀取 UTF-8 檔案。
Reference
OpenTextFile Method
http://msdn.microsoft.com/en-us/library/314cz14s(v=vs.84).aspx
ASP OpenTextFile Method
http://www.w3schools.com/asp/met_opentextfile.asp
ASP TextStream Object
http://www.w3schools.com/asp/asp_ref_textstream.asp
Stream Object Properties, Methods, and Events
http://msdn.microsoft.com/en-us/library/windows/desktop/ms677486(v=vs.85).aspx