OpenTextFile与Unicode

标签: , , , ,

既然谈到了《VBS文件编码与Unicode》,顺便也测试一下 Scripting.FileSystemObject 对象的 OpenTextFile 方法对 Unicode 的支持吧。

测试之前先简单说一下 OpenTextFile 方法:

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

OpenTextFile 方法有四个参数,除了第一个以为其他都是可选的,第一个参数是文件的路径,第二个参数是读写模式,第三个参数是创建参数,这是很多人都熟知的。但是第四个参数用的人就比较少了:

format
可选项。使用三态值中的一个来指明打开文件的格式。如果忽略,那么文件将以 ASCII 格式打开。

其实参考手册中说的并不正确,如果 format 参数忽略或者为 False,那么文件将以 ANSI 格式打开,而不是 ASCII;而如果 format 参数为 True,那么文件将以 Unicode 格式打开。

为了弄清楚 OpenTextFile 到底支持哪几种 Unicode 格式,测试代码如下:

Dim fso
Set fso = CreateObject("scripting.filesystemobject")
str = fso.OpenTextFile("demon.txt", 1, False, True).ReadAll
WScript.Echo str

demon.txt

Copyright © 2011 Demon

测试结果

Unicode Little Endian With BOM Copyright © 2011 Demon
Unicode Little Endian Without BOM Copyright © 2011 Demon
Unicode Big Endian With BOM Copyright © 2011 Demon
Unicode Big Endian Without BOM 显示乱码
UTF-8 With BOM 显示乱码
UTF-8 Without BOM 显示乱码

从结果可以看出,OpenTextFile 支持带 BOM 的 Unicode 和不带 BOM 的 Unicode Little Endian,但是不支持 UTF-8。同理可知,该结论在 OpenAsTextStream 方法中也是一样的。

随机文章:

  1. Windows下编译cURL
  2. VBS SendMessage
  3. VBS中也有Vector
  4. VBS ByRef和ByVal参数
  5. Windows 7关闭共享后怎样去掉图标上的小锁

2 条评论 发表在“OpenTextFile与Unicode”上

  1. Firefly说道:

    OpenTextFile这个函数挺好用,我在LabVIEW里已经把他做成子函数了。

  2. shirne说道:

    看来还是要动手,
    我一直以为这个参数支持utf-8
    但也没实际用过,一般都用stream了.

留下回复