例如: Dim ReturnEncoding As Encoding ReturnEncoding = GetEncoding("C:\1.txt")
If ReturnEncoding = UTF8 Then 'UTF处理 ElseIf ReturnEncoding = Unicode Then 'Unicode Elseif ReturnEncoding = UnicodeBigEndian Then 'Unicode-BE处理 Else 'ANSI处理 End If
========模块Encoding.bas========== Option Explicit
Public Enum Encoding ANSI Unicode UnicodeBigEndian UTF8 End Enum
Public Function GetEncoding(FileName As String) As Encoding On Error GoTo Err
Dim fBytes(1) As Byte, freeNum As Integer freeNum = FreeFile
Open FileName For Binary Access Read As #freeNum Get #freeNum, , fBytes(0) Get #freeNum, , fBytes(1) Close #freeNum
If fBytes(0) = &HFF And fBytes(1) = &HFE Then GetEncoding = Unicode If fBytes(0) = &HFE And fBytes(1) = &HFF Then GetEncoding = UnicodeBigEndian If fBytes(0) = &HEF And fBytes(1) = &HBB Then GetEncoding = UTF8 Err: End Function
Public Sub FileToUTF8(FileName As String) Dim fBytes() As Byte, uniString As String, freeNum As Integer Dim ADO_Stream As Object
freeNum = FreeFile
ReDim fBytes(FileLen(FileName)) Open FileName For Binary Access Read As #freeNum Get #freeNum, , fBytes Close #freeNum
uniString = StrConv(fBytes, vbUnicode)
Set ADO_Stream = CreateObject("ADODB.Stream") With ADO_Stream .Type = 2 .Mode = 3 .Charset = "utf-8" .open .WriteText uniString .SaveToFile FileName, 2 .Close End With Set ADO_Stream = Nothing End Sub