“添加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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值