VBA学堂——判断文本编码
通过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