我正在尝试创建一个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文本文件? 谢谢
答案 0 :(得分:3)
通用语法:object.CreateTextFile(filename[, overwrite[, unicode]])
。在这里
true
,如果无法覆盖,则为false
。如果省略,则不会覆盖现有文件。 注意:如果覆盖参数为false
,或者未提供,则对于已存在的文件名,会出现错误。 true
,如果将其创建为ASCII文件,则为false
。 如果省略,则假定为ASCII文件。 (但最后的陈述似乎与你的经历相矛盾......)所以你可以用
打开文件Set myFile = objFSO.CreateTextFile("C:\TestFile.txt", true, false)
如果失败,请使用object.OpenTextFile(filename[, iomode[, create[, format]]])
,其中
ForReading
,
ForWriting
或ForAppending
。True
如果创建了新文件,则False
如果尚未创建。如果省略,a
新文件尚未创建。TriState
值中的一个用于表示
打开文件的格式。如果省略,则文件以ASCII格式打开。您可以使用iomode
,create
和format
参数的文字值,或定义(并使用)下一个常量:
'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)