VBA把GB2312 转换成UTF-8和UTF-8 without BOM

最近需要把用户的EXCEL转换成CSV, 然后导入OTM (Oracle transportation management )系统。

OTM 使用UFT8-8编码,请注意UFT-8有两个子集,UFT-8, UTF-8 without BOM.
下面的代码就是用于UTF-8,或者UTF-8 without BOM, 其两者区别就是文件头部有没有两个字节。

Sub WriteANSItoUF8WithoutBOM(strFile As String)

Set UTFStream = CreateObject(“ADODB.Stream”)
Set ANSIStream = CreateObject(“ADODB.Stream”)
Set BinaryStream = CreateObject(“ADODB.Stream”)

ANSIStream.Type = 2 'adTypeText
ANSIStream.Mode = 3 'adModeReadWrite
ANSIStream.Charset = "GB2312"
ANSIStream.Open
ANSIStream.LoadFromFile strFile  'ANSI File

UTFStream.Type = 2 'adTypeText
UTFStream.Mode = 3 'adModeReadWrite
UTFStream.Charset = "UTF-8"
UTFStream.Open
ANSIStream.CopyTo UTFStream


UTFStream.Position = 3 'skip BOM
BinaryStream.Type = 1 ' adTypeBinary
BinaryStream.Mode = 3 'adModeReadWrite
BinaryStream.Open

'Strips BOM (first 3 bytes)
UTFStream.CopyTo BinaryStream

BinaryStream.SaveToFile strFile, 2
BinaryStream.Flush
BinaryStream.Close

End Sub

你可能感兴趣的:(VBA,UTF-8,UTF-8,without,BOM,CSV,OTM,VBA)