(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(筆記本)可以正常打開的檔案都可以
