VBS Scripting.FileSystemObject需要帮助编写ANSI txt文件

时间:2015-01-21 18:55:17

标签: utf-8 vbscript com ansi

我正在尝试创建一个ANSI文件。但我尝试的一切都给了我一张没有BOM的UTF-8。

我尝试使用最少量的代码进行测试,这是我发现的。

 Dim myFile 
 Dim objFSO : Set objFSO=CreateObject("Scripting.FileSystemObject")
 Set myFile = objFSO.CreateTextFile("C:\TestFile.txt")
 myFile.Close

以上代码为我提供了MSDS所宣传的ANSI文件,但当我在下面的代码中写入

 Dim myFile 
 Dim objFSO : Set objFSO=CreateObject("Scripting.FileSystemObject")
 Set myFile = objFSO.CreateTextFile("C:\TestFile.txt")
 myFile.WriteLine "TestLine"
 myFile.Close

现在使用Notepad ++检查文件时,我有UTC-8没有物料清单

有代码正在等待我尝试创建的实际文件。代码不接受该文件。经过一些繁琐的调试后,我发现它不喜欢UTF格式。如果我现在使用Notepad ++保存为ANSI,则代码接受该文件。我需要从头开始以编程方式执行此操作。

任何人都可以确认他们是否得到相同的结果? 如何确保我最终得到ANSI文本文件? 谢谢

1 个答案:

答案 0 :(得分:3)

通用语法:object.CreateTextFile(filename[, overwrite[, unicode]])。在这里

  • 重写: 可选的。布尔值,指示是否可以覆盖现有文件。如果文件可以被覆盖,则值为true,如果无法覆盖,则为false。如果省略,则不会覆盖现有文件。 注意:如果覆盖参数为false,或者未提供,则对于已存在的文件名,会出现错误
  • 的unicode : 可选的。布尔值,指示文件是创建为Unicode还是ASCII文件。如果文件创建为Unicode文件,则值为true,如果将其创建为ASCII文件,则为false如果省略,则假定为ASCII文件。 (但最后的陈述似乎与你的经历相矛盾......)

所以你可以用

打开文件
Set myFile = objFSO.CreateTextFile("C:\TestFile.txt", true, false)

如果失败,请使用object.OpenTextFile(filename[, iomode[, create[, format]]]),其中

  • 对象:必填。 Object始终是FileSystemObject的名称。
  • filename :必填。用于标识文件的字符串表达式 开。
  • iomode :可选。可以是三个常量之一:ForReadingForWritingForAppending
  • 创建:可选。布尔值,指示新文件是否可以 如果指定的文件名不存在,则创建。值为True 如果创建了新文件,则False如果尚未创建。如果省略,a 新文件尚未创建。
  • 格式:可选。三个TriState值中的一个用于表示 打开文件的格式。如果省略,则文件以ASCII格式打开。

您可以使用iomodecreateformat参数的文字值,或定义(并使用)下一个常量:

'various useful constants
'iomode
Const ForReading = 1, ForWriting = 2, ForAppending = 8
'create
Const DontCreate =  False ' do not create a new file if doesn't exist
Const CreateFile =  True  ' create a new file if the specified filename doesn't exist
'format
Const OpenAsDefault = -2  ' Opens the file using the system default.
Const OpenAsUnicode = -1  ' Opens the file as Unicode.
Const OpenAsUSAscii =  0  ' Opens the file as ASCII.

'TriState (seen in documetation)
Const TristateUseDefault  = -2 ' Opens the file using the system default.
Const TristateTrue        = -1 ' Opens the file as Unicode.
Const TristateFalse       =  0 ' Opens the file as ASCII.

然后您可以打开文件(但如果存在则确保删除现有文件!)

Set myFile = objFSO.OpenTextFile( "C:\TestFile.txt", 2, true, 0)

或(更具可读性)

Set myFile = objFSO.OpenTextFile( "C:\TestFile.txt" _
             , ForWriting, CreateFile, OpenAsUSAscii)