1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 批量将ANSI文本txt文件转换成UTF8编码格式 (vbs方法)

批量将ANSI文本txt文件转换成UTF8编码格式 (vbs方法)

时间:2022-08-22 23:03:13

相关推荐

批量将ANSI文本txt文件转换成UTF8编码格式 (vbs方法)

准备两个文件即可

conv.vbs

run.bat

conv.vbs源码

'用法:将要更改编码的所有文件放到同一个文件夹中,将文件夹拖到该vbs上,输入要转换成的字符编码Dim fso,fd,fl,f,fdpath,charsetOn Error Resume NextIf WScript.Arguments.Length>=1 Thenfdpath = WScript.Arguments(0)Elsefdpath = InputBox("E:\xunlian\新增加的训练集","第一个参数")If fdpath = "" Then WScript.QuitEnd IfIf WScript.Arguments.Length>=2 Thencharset = WScript.Arguments(1)Elsecharset = InputBox("UTF-8","第二个参数")if charset = "" then WScript.Quitif UCase(charset) = "ANSI" then charset = "GB2312"End IfSet fso = CreateObject("scripting.filesystemobject")Set fd = fso.GetFolder(fdpath)Set fl=fd.FilesFor each f in flconvertct f.Path,charsetNextMsgBox "字符编码转换结束",,"tya提示"'将读取的文件内容以指定编码写入文件Function convertct(filepath,charset)Dim FileName, FileContents, dFileContentsFileName = filepath FileContents = LoadFile(FileName)Set savefile = CreateObject("adodb.stream")savefile.Type = 2 '这里1为二进制,2为文本型savefile.Mode = 3savefile.Open()savefile.charset = charsetsavefile.Position = savefile.Sizesavefile.Writetext(FileContents) 'write写二进制,writetext写文本型savefile.SaveToFile filepath,2savefile.Close()set savefile = nothingEnd Function'以文件本身编码读取文件Function LoadFile(Path)Dim Stm2Set Stm2 = CreateObject("ADODB.Stream")Stm2.Type = 2Stm2.Mode = 3Stm2.OpenStm2.Charset = CheckCode(path)'Stm2.Charset = "UTF-8"'Stm2.Charset = "Unicode"'Stm2.Charset = "GB2312"Stm2.position = Stm2.SizeStm2.LoadFromFile PathLoadFile = Stm2.ReadTextStm2.CloseSet Stm2 = NothingEnd Function'该函数检查并返回文件的编码类型Function CheckCode(file)Dim slzset slz = CreateObject("Adodb.Stream") slz.Type = 1slz.Mode = 3slz.Openslz.Position = 0slz.Loadfromfile fileBin=slz.read(2)If is_valid_utf8(read(file)) ThenCodes="UTF-8"ElseIf AscB(MidB(Bin,1,1))=&HFF and AscB(MidB(Bin,2,1))=&HFE ThenCodes="Unicode"ElseCodes="GB2312"End ifslz.CloseSet slz = NothingCheckCode = CodesEnd Function'将Byte()数组转成String字符串Function read(path)Dim ado, a(), i, nSet ado = CreateObject("ADODB.Stream")ado.Type = 1 : ado.Openado.LoadFromFile pathn = ado.Size - 1ReDim a(n)For i = 0 To na(i) = ChrW(AscB(ado.Read(1)))Nextread = Join(a, "")End Function'准确验证文件是否为utf-8(能验证无BOM头的uft-8文件)Function is_valid_utf8(ByRef input) 'ByRef以提高效率Dim s, reSet re = New Regexps = "[\xC0-\xDF]([^\x80-\xBF]|$)"s = s & "|[\xE0-\xEF].{0,1}([^\x80-\xBF]|$)"s = s & "|[\xF0-\xF7].{0,2}([^\x80-\xBF]|$)"s = s & "|[\xF8-\xFB].{0,3}([^\x80-\xBF]|$)"s = s & "|[\xFC-\xFD].{0,4}([^\x80-\xBF]|$)"s = s & "|[\xFE-\xFE].{0,5}([^\x80-\xBF]|$)"s = s & "|[\x00-\x7F][\x80-\xBF]"s = s & "|[\xC0-\xDF].[\x80-\xBF]"s = s & "|[\xE0-\xEF]..[\x80-\xBF]"s = s & "|[\xF0-\xF7]...[\x80-\xBF]"s = s & "|[\xF8-\xFB]....[\x80-\xBF]"s = s & "|[\xFC-\xFD].....[\x80-\xBF]"s = s & "|[\xFE-\xFE]......[\x80-\xBF]"s = s & "|^[\x80-\xBF]"re.Pattern = sis_valid_utf8 = (Not re.Test(input))End Function

run.bat 源碼

rem conv.vbs "E:\xunlian\新增加的训练集\博彩" "UTF-8"conv.vbs "E:\xunlian\新增加的训练集\博彩" "UTF-8"

bat和vbs放到一起,bat内容如下:

rem conv.vbs "改为txt所在文件夹a的路径" "改为要转换成的字符编码"

conv.vbs "改为txt所在文件夹a的路径" "UTF-8"

使用实例见run.bat文件内容,注意待转换的txt文件路径,双击该文件即将执行批处理

歡迎下載:链接:/s/1uWySdPa-73ByFoM-CACAdA 密码:cul0

心得:以上是看到熱心網友分享的,我也用過,感覺還是蠻好用的,支持。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。