2259 |
使用VBA檢查文字檔是4種編碼中的那一種 |
:「錦子老師,我公司有許多同仁使用記事本編輯純文字文件並將其存檔,可時我不知道其到底是用那種編碼類型存檔,是否有什麼辦法可以告訴我該文件用什麼編碼方式?謝謝!」
:「其實在網路上有很多現成的檢查工具,不過如果要使用VBA(VBscript),就需使用呼叫外部程式的方式,稍微有些不方便,所以網友SNARE寫了一個巨集(自定函數)」供大家參考,但在正常情況下,是不需要使用檢查編碼的,會出問題都是在不同檔案之間,檔案的編碼不一致(有2種以上(含)的編碼),且使用程式互相複製、修改檔案內容,這時如果沒注意,就很容易出現亂碼的問題。
Sub test()
MsgBox check("C:\test.txt")
End Sub
Function check(FileName As String) As String
Dim c1 As Byte, c2 As Byte, c3 As Byte, f As Integer
f = FreeFile
Open FileName For Binary As #f
Get #f, , c1
Get #f, , c2
Get #f, , c3
Close #f
If c1 = &HFF And c2 = &HFE Then
check = "Unicode-16(LE) "
Else
If c1 = &HFE And c2 = &HFF Then
check = "Unicode-16(BE)"
Else
If c1 = &HEF And c2 = &HBB And c3 = &HBF Then
check = "UTF-8"
Else
check = "ANSI"
End If
End If
End If
End Function
相關設定與說明請參考:https://en.wikipedia.org/wiki/Byte_order_mark#cite_note-b-13
結果如下:
2126Excel如何找到所有符合相同排序的欄位,並傳回下一欄位的值?-VBA版
留言列表