首页 > 编程 > VBScript > 正文

VBS实现GB2312,UTF-8,Unicode,BIG5编码转换工具

2020-06-26 18:23:43
字体:
来源:转载
供稿:网友
VBS写的GB2312,UTF-8,Unicode,BIG5编码转换工具,转换工具下载:GB2Ue.vbs (3.34 kb)
 
演示 
echo "ABCDE &!@#$ ^<>() %% abcde 测试!"> "处理前.txt" 
GB2Ue.vbs "处理前.txt" "处理后.txt" 
Ue2U8.vbs "处理后.txt" 
U82GB.vbs "处理后.txt" 
GB2U8.vbs "处理后.txt" 
U82Ue.vbs "处理后.txt" 
Ue2GB.vbs "处理后.txt" 
@echo 经过6次处理 "处理后.txt" 和 "处理前.txt" 仍旧是相同编码 
如果不知道文件的原始编码,请使用 

下面里面里面具体代码: 
复制代码代码如下:

' *==============================================================================* 
' * CMD 命令行编码转换工具包括GB2312,UTF-8,Unicode,BIG5...支持拖拽、文件另保存为 * 
' * CodeChange.vbs BY: yongfa365 
' * GB2Ue.vbs BY: fastslz 
' *==============================================================================* 
aCode = "GB2312" 
bCode = "Unicode" 
Show = "本脚本仅支持"&aCode&"到"&bCode&"的转换,请拖拽单个要转换的文件到此文件上! " 
Usage1 = "语法1:GB2Ue.vbs [驱动器][目录][文件名] (直接替换原文件模式)" 
Usage2 = "语法2:GB2Ue.vbs [驱动器][目录][文件名] [目标驱动器][目录][新名称] /Y" 
Usage3 = " 如果目标新文件已存在,使用/Y参数后将直接替换而不提示是否改写! " 
Usage4 = "命令行编码转换工具 BY: fastslz" 

Set objArgs=WScript.Arguments 
Set fso=CreateObject("Scripting.FileSystemObject") 
if objArgs.Count=0 Then 
MsgBox Show &vbCrLf&vbCrLf& Usage1 &vbCrLf& Usage2 &vbCrLf& Usage3, vbInformation, Usage4 
Wscript.Quit 
end if 
if not objArgs.Count < 3 Then 
Options="/y" 
ignoring = StrComp(objArgs(2), Options, vbTextCompare) 
if ignoring = 0 Then 
Sourcefile=objArgs(0) 
Getfile=objArgs(1) 
else 
MsgBox "文件数量或参数太多,拖拽批量处理请用 ANSI2Unicode.vbs ", vbInformation, "程序意外终止"
Wscript.Quit 
end if 
else 
if not objArgs.Count < 2 Then 
Sourcefile=objArgs(0) 
Getfile=objArgs(1) 
if fso.FileExists(objArgs(1)) then 
Choice = MsgBox ("待处理文件“"+Sourcefile+"” ==> 目标文件“"+Getfile+"” "&vbCrLf&"目标文件已存在,是否改写现有文件?“"+objArgs(1)+"” ",vbQuestion+vbYesNo,"是否改写") 
if Choice = vbYes Then 
Getfile=objArgs(1) 
else 
Wscript.Quit 
end if 
end if 
else 
Sourcefile=objArgs(0) 
Getfile=objArgs(0) 
end if 
end if 

Call CheckCode (Sourcefile) 
Call WriteToFile(Getfile, ReadFile(Sourcefile, aCode), bCode) 
Wscript.Quit 

Function ReadFile (Sourcefile, CharSet) 
Dim Str 
Set stm = CreateObject("Adodb.Stream") 
stm.Type = 2 
stm.mode = 3 
stm.charset = CharSet 
stm.Open 
stm.loadfromfile Sourcefile 
Str = stm.readtext 
stm.Close 
Set stm = Nothing 
ReadFile = Str 
End Function 

Function WriteToFile (Getfile, Str, CharSet) 
Set stm = CreateObject("Adodb.Stream") 
stm.Type = 2 
stm.mode = 3 
stm.charset = CharSet 
stm.Open 
stm.WriteText Str 
stm.SaveToFile Getfile,2 
stm.flush 
stm.Close 
Set stm = Nothing 
End Function 

Function CheckCode (Sourcefile) 
Dim slz 
set slz = CreateObject("Adodb.Stream") 
slz.Type = 1 
slz.Mode = 3 
slz.Open 
slz.Position = 0 
slz.Loadfromfile Sourcefile 
Bin=slz.read(2) 
if AscB(MidB(Bin,1,1))=&HEF and AscB(MidB(Bin,2,1))=&HBB 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 
if not aCode = Codes Then 
MsgBox "待处理文件 “"&Sourcefile&"”"&vbCrLf&"该文件原始编码不是"&aCode&",本脚本仅支持"&aCode&"到"&bCode&"的转换! ",vbInformation,"错误终止" 
WScript.Quit 
end if 
slz.Close 
set slz = Nothing 
End Function 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表