欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vbs实现unicode和ascii编码转换

程序员文章站 2022-03-21 16:28:49
一、copy a unicode file to an ansi file witoansi.vbs文件: 复制代码 代码如下: ' utility to rewri...

一、copy a unicode file to an ansi file

witoansi.vbs文件:

复制代码 代码如下:

' utility to rewrite a unicode text file as an ansi text file
' for use with windows scripting host, cscript.exe or wscript.exe
' copyright (c) 1999, microsoft corporation
'
option explicit

' filesystemobject.createtextfile and filesystemobject.opentextfile
const openasascii   = 0
const openasunicode = -1

' filesystemobject.createtextfile
const overwriteifexist = -1
const failifexist      = 0

' filesystemobject.opentextfile
const openasdefault    = -2
const createifnotexist = -1
const failifnotexist   = 0
const forreading = 1
const forwriting = 2
const forappending = 8

dim argcount:argcount = wscript.arguments.count
if argcount > 0 then if instr(1, wscript.arguments(0), "?", vbtextcompare) > 0 then argcount = 0
if (argcount = 0) then
    wscript.echo "utility to copy unicode text file to an ansi text file." &_
        vbnewline & "the 1st argument is the unicode text file to read" &_
        vbnewline & "the 2nd argument is the ansi text file to write" &_
        vbnewline & "if the 2nd argument is omitted, the unicode file will be replaced"
    wscript.quit 1
end if

dim infile, outfile, instream, outstream, inline, filesys, wshshell
if argcount > 1 then
    outfile = wscript.arguments(1)
    infile  = wscript.arguments(0)
else
    outfile = wscript.arguments(0)
    infile  = outfile & ".tmp"
    set wshshell = wscript.createobject("wscript.shell")
    wshshell.run "cmd.exe /c copy " & outfile & " " & infile, 0, true
end if

set filesys = createobject("scripting.filesystemobject")
set instream  = filesys.opentextfile(infile, forreading, failifnotexist, openasdefault)
set outstream = filesys.createtextfile(outfile, overwriteifexist, openasascii)
do
    inline = instream.readline
    outstream.writeline inline
loop until instream.atendofstream
instream.close
outstream.close
if argcount = 1 then wshshell.run "cmd.exe /c del " & infile, 0

批处理中调用:

复制代码 代码如下:

cscript witoansi.vbs [path to unicode file][path to ansi file]

二、copy a ansi file to an unicode file

只需对opentextfile和createtextfile的打开方式做调整即可。

三、参考

http://msdn.microsoft.com/en-us/library/aa368046%28vs.85%29.aspx

四、opentextfile和createtextfile的使用

createtextfile 方法

创建指定文件并返回 textstream 对象,该对象可用于读或写创建的文件。

复制代码 代码如下:

object.createtextfile(filename[, overwrite[, unicode]])

参数

object

必选项。应为 filesystemobject 或 folder 对象的名称。

filename

必选项。字符串表达式,指明要创建的文件。

overwrite

可选项。boolean 值指明是否可以覆盖现有文件。如果可覆盖文件,该值为 true;如果不能覆盖文件,则该值为 false 。如果省略该值,则不能覆盖现有文件。

unicode

可选项。boolean 值指明是否以 unicode 或 ascii 文件格式创建文件。如果以 unicode 文件格式创建文件,则该值为 true;如果以 ascii 文件格式创建文件,则该值为 false。如果省略此部分,则假定创建 ascii 文件。

opentextfile 方法

打开指定的文件并返回一个 textstream 对象,可以读取、写入此对象或将其追加到文件。

复制代码 代码如下:

object.opentextfile(filename[, iomode[, create[, format]]])

参数

object

必选项。应为 filesystemobject 对象的名称。

filename

必选项。字符串表达式,指明要打开的文件名称。

iomode

可选项。输入/输出模式,是下列三个常数之一:forreading,forwriting,或 forappending。

create

可选项。boolean 值,指出当指定的 filename 不存在时是否能够创建新文件。允许创建新文件时为 true,否则为 false。默认值为 false。

format

可选项。三个 tristate 值之一,指出以何种格式打开文件。若忽略此参数,则文件以 ascii 格式打开。

设置

iomode 参数可为下列设置之一:

描述
forreading 1 以只读模式打开文件。不能对此文件进行写操作。
forwriting 2 以只写方式打开文件。不能对此文件进行读操作。
forappending 8 打开文件并在文件末尾进行写操作。

format 参数可为下列设置之一:

常数 描述
tristateusedefault -2 以系统默认格式打开文件。
tristatetrue -1 以 unicode 格式打开文件。
tristatefalse  0 以 ascii 格式打开文件。