談電子資料交換(EDI)基礎技術的對照:文字檔的讀取

現今電腦使用極為平凡,網路上的資料又是多如洋海,景然像是個大數據(Big Data)時代。
若要資料互通,彼此連結,就常常會應用電子資料交換的技術;好讓工作順暢,也可以節省人力、時間。

一般來說,電子資料交換最常使用文字檔格式(也稱作文本檔) *.txt。這類型的檔案,只要滑鼠點擊兩下,就可以被 NotePad 給開啟。(Windows 的默認設定)
但很多人可能不會注意到,這個被開啟的檔案是被儲存成什麼編碼格式?例如:ANSI、Unicode、Unicode big endian、UTF-8。

你可以使用各式文書編輯軟體,來看看他們是什麼編碼格式。
例如:用 NotePad++ 可以看到 image,喔,原來儲存為 UTF-8 格式。

你若是用 NotePad,就會看到 image,你也可以更改成其他編碼格式來存檔。
image

 

電子資料交換的應用,一般是以程式方式來處理。方法有 Input/Output、File System ObjectADODB.Stream。

The File System Object, generally used by VBScript devlopers to read and write text files, can read only ASCII or Unicode text files. You cannot use it to read or write UTF-8 encoded text files.

But, if you can use Microsoft ActiveX Data Objects (ADO), you can read UTF-8 encoded text files

File System Object 常被使用在 VBScript 的開發上,可用以讀/寫 ASCII或Unicode 格式的文本檔。但 File System Object 不能用存取 UTF-8 編碼的檔案。

所以,你能使用 Microsoft ActiveX Data Objects (ADO) 才能讀取 UTF-8 編碼的檔案。

 

以下是兩種類型的程式對比條列,方便有需求者參考。


    Dim strFile As String
Dim InputStr As String
Dim Fn As Integer

strFile = "D:\GitHub\Misc\對帳單.txt"

Fn = FreeFile
Open strFile For Input As #Fn





While Not EOF(Fn)
Line Input #Fn, InputStr

' do something ....
Wend

Close #Fn
    Dim strFile As String
Dim InputStr As String
Dim oStreamIn

strFile = "D:\GitHub\Misc\對帳單.txt"

Set oStreamIn = CreateObject("ADODB.Stream")
oStreamIn.Type = 2 ' adTypeText
oStreamIn.Open
oStreamIn.Charset = "utf-8"
oStreamIn.LoadFromFile strFile
oStreamIn.LineSeparator = 10 ' # Linefeed

Do Until oStreamIn.EOS
InputStr = oStreamIn.ReadText(-2) ' adReadLine

' do something ....
Loop

oStreamIn.Close

沒有留言: