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

准备两个文件即可

conv.vbs

run.bat

conv.vbs源码

‘用法:将要更改编码的所有文件放到同一个文件夹中,将文件夹拖到该vbs上,输入要转换成的字符编码
Dim fso,fd,fl,f,fdpath,charset
On Error Resume Next
If WScript.Arguments.Length>=1 Then
 fdpath = WScript.Arguments(0)
Else
 fdpath = InputBox("E:\xunlian\新增加的训练集","第一个参数")
 If fdpath = "" Then WScript.Quit
End If
If WScript.Arguments.Length>=2 Then
 charset = WScript.Arguments(1)
Else
 charset = InputBox("UTF-8","第二个参数")
 if charset = "" then WScript.Quit
 if UCase(charset) = "ANSI" then charset = "GB2312"
End If
Set fso = CreateObject("scripting.filesystemobject")
Set fd = fso.GetFolder(fdpath)
Set fl=fd.Files
For each f in fl
 convertct f.Path,charset
Next
MsgBox "字符编码转换结束",,"tya提示"

‘将读取的文件内容以指定编码写入文件
Function convertct(filepath,charset)
 Dim FileName, FileContents, dFileContents
 FileName = filepath
 FileContents = LoadFile(FileName)
 Set savefile = CreateObject("adodb.stream")
 savefile.Type = 2  ‘这里1为二进制,2为文本型
 savefile.Mode = 3
 savefile.Open()
 savefile.charset = charset
 savefile.Position = savefile.Size
 savefile.Writetext(FileContents)  ‘write写二进制,writetext写文本型
 savefile.SaveToFile filepath,2
 savefile.Close()
 set savefile = nothing
End Function
‘以文件本身编码读取文件
Function LoadFile(Path)
    Dim Stm2
    Set Stm2 = CreateObject("ADODB.Stream")
    Stm2.Type = 2
    Stm2.Mode = 3
    Stm2.Open
    Stm2.Charset = CheckCode(path)
    ‘Stm2.Charset = "UTF-8"
    ‘Stm2.Charset = "Unicode"
    ‘Stm2.Charset = "GB2312"
    Stm2.position = Stm2.Size
    Stm2.LoadFromFile Path
    LoadFile = Stm2.ReadText
    Stm2.Close
    Set Stm2 = Nothing
End Function
‘该函数检查并返回文件的编码类型
Function CheckCode(file)
Dim slz
set slz = CreateObject("Adodb.Stream")
slz.Type = 1
slz.Mode = 3
slz.Open
slz.Position = 0
slz.Loadfromfile file
Bin=slz.read(2)
If is_valid_utf8(read(file)) Then
Codes="UTF-8"
ElseIf AscB(MidB(Bin,1,1))=&HFF and AscB(MidB(Bin,2,1))=&HFE Then
Codes="Unicode"
Else
Codes="GB2312"
End if
slz.Close
Set slz = Nothing
CheckCode = Codes
End Function
‘将Byte()数组转成String字符串
Function read(path)
    Dim ado, a(), i, n
    Set ado = CreateObject("ADODB.Stream")
    ado.Type = 1 : ado.Open
    ado.LoadFromFile path
    n = ado.Size - 1
    ReDim a(n)
    For i = 0 To n
        a(i) = ChrW(AscB(ado.Read(1)))
    Next
    read = Join(a, "")
End Function
‘准确验证文件是否为utf-8(能验证无BOM头的uft-8文件)
Function is_valid_utf8(ByRef input) ‘ByRef以提高效率
    Dim s, re
    Set re = New Regexp
    s = "[\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 = s
    is_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文件路径,双击该文件即将执行批处理

歡迎下載:链接:https://pan.baidu.com/s/1uWySdPa-73ByFoM-CACAdA 密码:cul0

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

原文地址:https://www.cnblogs.com/lxh1208891835/p/9493764.html

时间: 2024-10-01 06:58:15

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

TXT文件转换成DataSet数据集

1 /// <summary> 2 /// TXT文件转换成DataSet数据集 3 /// </summary> 4 /// <param name="FilePath"></param> 5 /// <param name="TableName"></param> 6 /// <returns></returns> 7 private DataSet TextFile

函数WS_UPLOAD 功能﹕将TXT文件转换成SAP中的内表定义的数据表格文件

1 . 函数WS_UPLOAD      功能﹕将TXT文件转换成SAP中的内表定义的数据表格文件     注意﹕1 函数将按参数 data_tab 的实际参数(假设为 table1) table1 定                                                                              义的各个字段的长度来依次将TXT文件间隔开﹐并依次将对应的值付给table1的             字段,table中的各个字段必须为C

python 将txt文件转换成字典

txt 文件内容如下 liu 123shao 456hui 789 将上述txt文件转换成字典格式实现思路:定义一个空列表,按行读取txt文件,然后转换成嵌套列表,进而通过dict方法将嵌套列表转换成字典(左边为key,右边为value) 1 with open('user_list','r',encoding='utf-8') as f: 2 dic=[] 3 for line in f.readlines(): 4 line=line.strip('\n') #去掉换行符\n 5 b=lin

怎样将PDF文件转换成jpg图片的方法

有些情况下需要将文档内容转为图片进行保存.与PDF文件一样,jpg格式的图片是一种与平台无关的通用的图片格式.适合用来传输和存储.所以一般将PDF转换成的图片都是jpg格式的. 虽然一般截图也是jpg格式的,但是通过截图的方式来将PDF文档的页面一个个转换成图片是需要用更多的时间的,而且图片质量难以保证.页面较大的文档截取的图片可能会使图片内容不清晰. 通过pdf转换成jpg软件来将文件转换成图片也是一种较好的方法.转换的图片与原文档的页面大小相同,并且输出的图片是jpg格式的. 用转换工具转换

把PDF文件转换成图片有哪些方法

有时候发送一些PDF格式的文档资料不想被他人随意修改,有怕别人无法打开这种格式文件查看的话,那么可以将这些文档转成jpg格式的图片,然后再进行发送.刚开始不知道怎么处理PDF这种格式的文件,后来不断找方法,发现PDF文件是可以转换成jpg图片的,这在需要批量处理PDF文件的时候尤为有用. 根据不同情况可以选择用不同的方法来操作,一般对一些简单的文档,内容比较少的,可以用在线PDF转图片工具进行处理.首先打开进入到对应页面,在PDF转换中选择“PDF转换图片”,或者是点击下面对应类型的图标,进入到

将txt文件转换成EXCEL文件的方法

地址:http://wenku.baidu.com/view/fcdbe8cca1c7aa00b52acbad.html 1.在EXCEL程序中点击“打开”,将文件类型选择为“文本文件”,找到以前用过的明细申报文件(.txt): 2.在“文本导入向导1”中选择“分隔符号”: 3.在“文本导入向导2”中的“分隔符号”栏选择“逗号”: 4.在“文本导入向导3”中的“数据预览”里面将“证件号码”和“所得项目代码”定义为“文本”: 5.点击“完成”,打开文本文件:

&lt;p&gt;&lt;span style=&quot;font-size:14px&quot;&gt;近期须要批量将PNM&amp;#26684;式的文件转换成GIF文件。我尝试了例如以下的图像转换工具:&lt;/span&gt;&lt;/p&gt;

近期须要批量将PNM格式的文件转换成GIF文件.我尝试了例如以下的图像转换工具: ImageBatch:全然免费,但只支持PNG JPEG BMP GIF四种格式 OfficeConverter:在线转换软件,支持全部图像格式的相互转换.大量处理图像时须要支付一定费用,否则效率低 Pixillion:支持全部格式,试用版只最多支持5个文件为一组batch的处理,使用100次以后必须付费使用 因为上述工具均不能满足我的须要(不想使用付费软件),我尝试搜索PNM转GIF文件的软件包,发现能够安装Py

怎么把PDF文件转换成Word?三招教你轻松搞定

PDF和Word两个文件之间,相互转换是在我们的工作中经常需要用到的,也曾经是很多职场新人的困扰,很多人都想知道怎么把PDF文件转换成Word?今天呢就来给大家分享三个简单的方法,只需三招就能轻松搞定. 方法1:打开方式为Word 怎么把PDF文件转换成Word?这个方法其实很简单的,只需要点击PDF文档,选择打开方式为Word,利用Word打开即可.步骤:点击PDF文件--右击鼠标--选择[打开方式]--点击Word:方法2:专业转换器 如果在觉得通过Word打开方式不太好用的话,可以使用专业

Linux下将UTF8编码批量转换成GB2312编码的方法

Linux下将UTF8编码批量转换成GB2312编码的方法 在sqlplus中导入UTF8编码的sql脚本就会出现乱码错误,这时就需要将UTF8编码转换成GB2312编码,下面为大家介绍下在Linux下如何进行转换 UTF8编码和GB2312编码是有区别的,在sqlplus中导入UTF8编码的sql脚本就会出现乱码错误,这时就需要将UTF8编码转换 成GB2312编码,可是一个个的转换十分麻烦,下面小编就教你如何在Linux下将UTF8编码批量转换成GB2312编码. 背景 本人在使用oracl