VBA学堂——判断文本编码

2019-10-23  本文已影响0人  Excel大咖

通过VBA怎么去判断文本的编码

首先了解文本的编码。

一般用于Windows系统的(扩展名为.txt)文本编码有四种:

ANSI/Unicode big endian/Unicode /UFT-8


不同的编码,可以根据文本的前两个字节来判断编码的格式

ANSI:        无格式定义;

Unicode:       前两个字节为FFFE;

Unicode big endian: 前两字节为FEFF; 

UTF-8:        前两字节为EFBB,第三字节为BF;

通常我会把字节从16进制转为10进制可以得到

ANSI:        无格式定义;

Unicode:       前两个字节为255254;

Unicode big endian: 前两字节为254255; 

UTF-8:        前两字节为239187,第三字节为191;


知道前两个字节代表什么,这样读取文本后,判断前两个字节就能判断文本的编码:

代码如下:

Sub QQ_75901240()

    MsgBox GetEncode("D:\a.txt")  '判断文本a的编码

End Sub

Function GetEncode(ByVal myFileName As String)

    Dim FS As Integer

    Dim Temp(2) As Byte

    Dim i As Long

    FS = FreeFile

    Open myFileName For Binary Access Read As #FS  '读取文本,记为#FS

    Get #FS, 1, Temp

    Close #FS

    Select Case Temp(0) & Temp(1)    'Temp(0) 为字节一,Temp(1) 为字节二

    Case "255254"

        GetEncode = "Unicode"    '文件是Unicode编码

    Case "254255"

        GetEncode = "Unicode Big Endian" '文件是UnicodeBigEndian编码

    Case "239187"

        GetEncode = "UTF-8"    '文件是utf-8编码

    Case Else

        GetEncode = "ANSI"  '文件是ascii编码

    End Select

End Function

案例下载:

https://pan.baidu.com/s/1htanWsRBB4yznEweecnbDQ

上一篇下一篇

猜你喜欢

热点阅读