“添加UFT-8文件头并转换成ANSI编码”,无需添加BOM照样转换
set fso = CreateObject("Scripting.FileSystemObject") 'Files属性获取文件集合时,与CMD下的for遍历文件有相同的Bug: '如果文件名有变动,可能会重复或多次遍历 '看来是某个API的Bug '所以先获取文件列表再使用保险一点 FileList = "" for each oFile in fso.GetFolder(".").Files if LCase(fso.GetExtensionName(oFile.Path)) = LCase("txt") then FileList = FileList & oFile.Path & vbCrLf end if next Files = Split(FileList, vbCrLf) for i=0 to UBound(Files)-1 '最后一个元素是空的 'U8ToU8Bom Files(i) '如果要生成一个有BOM的文件,启用此行 U8ToAnsi Files(i) next function U8ToU8Bom(strFile) dim ADOStrm Set ADOStrm = CreateObject("ADODB.Stream") ADOStrm.Type = 2 ADOStrm.Mode = 3 ADOStrm.CharSet = "utf-8" ADOStrm.Open ADOStrm.LoadFromFile strFile ADOStrm.SaveToFile strFile & ".u8.txt", 2 ADOStrm.Close Set ADOStrm = Nothing end function function U8ToAnsi(strFile) dim ADOStrm dim s Set ADOStrm = CreateObject("ADODB.Stream") ADOStrm.Type = 2 ADOStrm.Mode = 3 ADOStrm.CharSet = "utf-8" ADOStrm.Open ADOStrm.LoadFromFile strFile s = ADOStrm.ReadText ADOStrm.Position = 0 ADOStrm.CharSet = "gbk" ADOStrm.WriteText s ADOStrm.SetEOS ADOStrm.SaveToFile strFile & ".ansi.txt", 2 ADOStrm.Close Set ADOStrm = Nothing end function
原文地址:http://www.bathome.net/thread-8299-1-1.html