VBS实现GB2312,UTF-8,Unicode,BIG5编码转换工具
2016-07-07来源:

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

推荐信息
Baidu
map