使用vba檢查文字檔(txt),是4種編碼中的哪一種(範例)

這個範例檢查的是windows notepad(記事本),存檔時可以看到的4種編碼類型
(ANSI、Unicode、Unicode big endian、UTF-8)


網路上有很多現成的檢查工具
不過如果要用在vba(vbscript),就需使用呼叫外部程式的方式,稍微不方便一些
所以寫一個範例給各位參考

但在正常情況下,是不需要檢查編碼的
會出問題都是在不同檔案之間,檔案的編碼不一致(有2種 or 更多的編碼)
且使用程式互相複製、修改檔案內容,這時如果沒注意,就很容易出現亂碼的問題



'程式說明:
'利用檔案前2Byte當判斷條件,檢查出編碼類型
'判斷用的16進位碼,可參考
'https://en.wikipedia.org/wiki/Byte_order_mark



Sub test()
MsgBox check("D:\test.txt")
End Sub

Function check(FileName As String) As String

Dim c1 As Byte, c2 As Byte, f As Integer
f = FreeFile
Open FileName For Binary As #f
Get #f, , c1
Get #f, , c2
Close #f

If c1 = &HFF And c2 = &HFE Then
check = "Unicode"
Else
If c1 = &HFE And c2 = &HFF Then
check = "Unicode big endian"
Else
If c1 = &HEF And c2 = &HBB Then
check = "UTF-8"
Else
check = "ANSI"
End If
End If
End If

End Function




因為是做成function,所以想當函數使用也行
副檔名不一定要txt,只要notepad(筆記本)可以正常打開的檔案都可以
2019-10-08 6:02 #1
限制級
您即將進入之討論頁 需滿18歲 方可瀏覽。
提醒:內容可能因過於寫實、驚悚而令人感到不舒服,是否繼續觀看?

根據「電腦網路內容分級處理辦法」修正條文第六條第三款規定,已於該限制級網頁,依台灣網站分級推廣基金會規定作標示。
評分
複製連結