命令行GB2312,UTF-8,Unicode,BIG5编码转换工具VBS版(2007-12更新)
🖨 打印本页
标题:命令行GB2312,UTF-8,Unicode,BIG5编码转换工具VBS版(2007-12更新)
作者:fastslz | 时间:2007-12-05 14:41 | 标题:命令行GB2312,UTF-8,Unicode,BIG5编码转换工具VBS版(2007-12更新)
' *==============================================================================*
' * CMD 命令行编码转换工具包括GB2312,UTF-8,Unicode,BIG5...支持拖拽、文件另保存为 *
' * CodeChange.vbs BY: yongfa365 http://www.yongfa365.com 2007-10-04 *
' * GB2Ue.vbs BY: fastslz http://bbs.cn-dos.net 2007-12-03 *
' *==============================================================================*
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
演示
echo "ABCDE &!@#$ ^<>() %% abcde 测试!"> "处理前.txt"
GB2Ue.vbs "处理前.txt" "处理后.txt" /y
Ue2U8.vbs "处理后.txt"
U82GB.vbs "处理后.txt"
GB2U8.vbs "处理后.txt"
U82Ue.vbs "处理后.txt"
Ue2GB.vbs "处理后.txt"
@echo 经过6次处理 "处理后.txt" 和 "处理前.txt" 仍旧是相同编码
编码查询工具 QueryCode.vbs
http://www.cn-dos.net/forum/viewthread.php?tid=36012&fpage=1&highlight=
[
Last edited by fastslz on 2007-12-9 at 11:24 PM ]
作者:s11ss | 时间:2007-12-05 16:36
多谢分享,研究一下。
作者:electronixtar | 时间:2007-12-06 14:45
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
果然是这段,嘿嘿~
作者:fastslz | 时间:2007-12-09 23:30
更新:
加强应用性,避免用户误操作造成不必要的损失,增加判断输入文件编码是否正确功能。
作者:laomeng | 时间:2007-12-10 23:03
高手,水平太高了,以后来这里好好,好多年不碰dos,手生了不少
作者:prcjie | 时间:2007-12-20 16:51
下载一个试试~~ 找类似的工具好久了~谢谢
作者:qzwqzw | 时间:2007-12-20 20:01
谁有空写一个纯dos下的版本
这两天尝试在dos下浏览邮件
满篇的mime字符令人发愁
作者:yongfa365 | 时间:2007-12-23 14:24
CheckCode 这个函数只能判断带BOM的文件
作者:fastslz | 时间:2007-12-23 18:41
在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。
作者:yongfa365 | 时间:2007-12-23 21:06
有BOM很多地方会有问题,不喜欢这个BOM
作者:fastslz | 时间:2007-12-24 01:43
回9楼时匆忙还不注意原来是柳永法(yongfa365)高手哦,看你的Blog受益匪浅,在你的CodeChange.vbs代码中也学到不少
作者:fastslz | 时间:2007-12-24 01:47
Originally posted by qzwqzw at 2007-12-20 20:01:
谁有空写一个纯dos下的版本
这两天尝试在dos下浏览邮件
满篇的mime字符令人发愁
纯DOS

纯CMD的吧?给个思路
作者:Rayz | 时间:2008-01-16 16:37
好东西,我下来了,谢谢分享
作者:sheercony | 时间:2008-02-18 13:43
太棒了 真是好东西
作者:35799 | 时间:2008-03-07 01:43
谢谢。楼主能不能帮我把转换后扩展名同时改htm。因为我的索爱手机能看到UTF-8格式的htm(看书用的)
[ Last edited by 35799 on 2008-3-7 at 01:46 AM ]
作者:fastslz | 时间:2008-03-07 09:41
Originally posted by 35799 at 2008-3-7 01:43:
谢谢。楼主能不能帮我把转换后扩展名同时改htm。因为我的索爱手机能看到UTF-8格式的htm(看书用的)
[ Last edited by 35799 on 2008-3-7 at 01:46 AM ]
GB2U8.vbs "处理前.txt" "处理后.htm" /y
作者:35799 | 时间:2008-03-07 13:26
是的。行吗
作者:fastslz | 时间:2008-03-07 14:08
Originally posted by 35799 at 2008-3-7 13:26:
是的。行吗
你连试都没试就提问?试了就知道了
作者:micao | 时间:2008-03-15 13:59
很好,不过要DLL文件的支持。
作者:tt518 | 时间:2008-03-31 20:04
CMD收发邮件很简单,Telnet到POP3服务器就可以收邮件,Telnet到SMTP服务器就可以发邮件。
作者:xhdz | 时间:2008-04-09 20:49
太好了,用这个来转换比用记事本方便多了。
作者:iboy2000 | 时间:2008-04-14 09:22
太棒了,好东西,感谢了。
作者:twinsv | 时间:2008-04-16 15:14
太棒了 真是好东西
作者:hjy82919 | 时间:2008-04-18 15:01
怎么下载不了呀??郁闷
作者:hjy82919 | 时间:2008-04-18 15:04
积分高于一点怎么也下载不了?
作者:kioskboy | 时间:2008-04-18 18:36
ANSI2Unicode.vbs 能拖文件夹(有多级子文件夹),那就更好了
麻烦改下,好吗
作者:sandyzone | 时间:2008-04-20 12:07
太棒了 真是好东西
作者:qifei78 | 时间:2008-05-26 18:53
真是好东西
作者:kjuse | 时间:2008-05-29 09:59
下载一个试试~~ 找类似的工具好久了~谢谢
作者:theopathy | 时间:2008-05-29 22:05
经典收藏
作者:stringoe | 时间:2008-06-03 18:21
学习了
作者:radem | 时间:2008-06-19 18:06
正需要这个...
作者:kouka2008 | 时间:2008-07-24 23:53
多谢分享,研究一下。
作者:yzckq | 时间:2008-07-30 08:42
好东西,我下来了,谢谢分享
作者:orgren | 时间:2008-09-02 12:46
找了好久了!只看到部分代码。
谢谢
作者:butfly | 时间:2008-09-18 10:17
很好用。。。。
作者:SoftNote | 时间:2008-09-24 20:22
正好搜索到这个东西 批处理utf-8中文乱码 只能求助了
作者:bgfcgh | 时间:2008-11-01 22:06
太棒了 真是好东西
作者:shell | 时间:2008-11-09 16:26
拿来用用
作者:joydiy | 时间:2008-11-12 02:38
太好了,感谢
作者:nunj | 时间:2008-11-12 15:49 | 标题:果然有强人呀
果然有强人呀 哈哈
作者:kennybao | 时间:2008-11-12 17:02
看得不太懂
作者:nsspirit | 时间:2008-12-29 04:11
我在找DOS版,谢谢了
作者:wq1282 | 时间:2009-04-29 00:30
好东西啊,想看一下
作者:jackli625 | 时间:2009-06-26 15:43
太好了,找了好久,要的就是这个了
作者:brant | 时间:2009-07-03 21:47
好东西
作者:baojcs | 时间:2009-09-05 20:41 | 标题:积分怎么来的?
新人请教了
作者:baojcs | 时间:2009-09-05 21:27 | 标题:谢谢楼主
哈哈,下了,正是我所需要的,感谢楼主!
作者:baojcs | 时间:2009-09-05 21:32 | 标题:只能加一分
不好意思,新手,只有一分加上
作者:baojcs | 时间:2009-09-05 21:33
什么意思?居然不准我加分?
作者:yufei693 | 时间:2009-12-17 08:53
看来大家是经常遇到文件类型不一致的问题
我遇到的问题是用ByongdCompare生成的报告不能用for解析(包含中文),中文全是乱码。不知道用这个转换后能不能解决。
作者:5988143 | 时间:2009-12-18 12:02 | 标题:謝謝分享~
謝謝分享~正在尋找~
作者:fenku | 时间:2010-01-15 08:27
试试看
作者:nfwolf | 时间:2010-01-20 09:32
谢谢。楼主
作者:gudou | 时间:2010-05-02 13:36
我的神啊……终于找到命令行下Unicode转ANSI的方法了……太感谢了!!
作者:yslf | 时间:2010-07-31 16:08
高手就是高手,困扰了我一天的问题终于得以解决了。谢
作者:a124356434 | 时间:2010-08-19 13:38
ssssssssssssssssssssssssssss
作者:cxbbs | 时间:2010-09-08 13:31
楼主的代码很不错呀,谢谢
作者:00x0 | 时间:2010-09-10 05:15
果然好物
作者:imzhangliang | 时间:2010-09-10 13:49
感谢分享
作者:fztyp | 时间:2010-10-25 21:41
很好很强
作者:loveqianool | 时间:2010-11-05 11:56
不知道能不能增加sjis日文编码的转换..
作者:osooso | 时间:2010-11-24 10:12
xxxxxxxxxxxxxxxxxxxxxxxxxxx
作者:jplou | 时间:2010-11-29 09:40
下载一个试试~~ 找类似的工具好久了~谢谢
作者:ypf | 时间:2010-12-30 21:34
來晚了 如此佳作下載收藏是一定要的!
来源:https://www.cn-dos.net/forum/viewthread.php?tid=35986 · 打印时间 2026-06-30 12:27