使用VBS 寫了一個函數來讀取一個txt文件,函數如下:
Dim fso,hf Function readProgFile(byval progFileName) Dim progStrLine progStrLine = "" Set fso = CreateObject("Scripting.FileSystemObject") Set hf = fso.OpenTextFile(progFileName) Do Until hf.atendofstream progStrLine = progStrLine+ hf.readline+ vbCrLf Loop hf.close readProgFile = progStrLine End Function
其中參數progFileName 是txt 文件的文件名;txt是unicode 編碼格式,里面有中文。用該函數讀取的txt 里的內容中文部分都是亂碼;
最后發現這是函數OpenTextFile 的參數設置出了問題。
OpenTextFile 函數如下:
object.OpenTextFile(filename[, iomode[, create[, format]]])
參數
object
必選項。應為 FileSystemObject 對象的名稱。
filename
必選項。字符串表達式,指明要打開的文件名稱。
iomode
可選項。輸入/輸出模式,是下列三個常數之一:ForReading,ForWriting,或 ForAppending。
iomode 參數可為下列設置之一:
create
可選項。Boolean 值,指出當指定的 filename 不存在時是否能夠創建新文件。允許創建新文件時為 True,否則為False。默認值為 False。
format
可選項。三個 Tristate 值之一,指出以何種格式打開文件。若忽略此參數,則文件以 ASCII 格式打開。
所以openText 里面的參數format 應該選擇使用unicode 格式打開,修改為如下:
Set hf = fso.OpenTextFile(progFileName,1,0,-1)'read unicode file
中文讀取正確了,問題解決!