close

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

結果如下:

 

2176Excel VBA 時間無法正確比較的問題

21736個高手常用的Excel技巧-消除亂碼

2133不同顏色儲存格該如何分別計數?(三)

2126Excel如何找到所有符合相同排序的欄位,並傳回下一欄位的值?-VBA版

2120Excel VBA對照字串並自動按順序排列

 

 


arrow
arrow
    創作者介紹

    錦子老師 發表在 痞客邦 留言(0) 人氣()