3

我正在尝试使用将一些中文字符写入文本文件

Set myFSO = CreateObject("Scripting.FileSystemObject")
Set outputFile = myFSO.OpenTextFile(getOutputName(Argument, getMsiFileName(Wscript.Arguments)), forWriting, True)
outputFile.WriteLine(s) 

该变量s包含我从另一个文件中读取的中文字符。我回s显值,我可以在屏幕上正确看到 s。但是,由于某种原因,脚本在outputFile.WriteLine(s)没有返回任何错误消息的情况下停止运行。

我错过了什么吗?

4

3 回答 3

5

也许它与字符编码有关。尝试在方法的最后一个参数中直接指定文件的 Unicode 格式OpenTextFile

Const Unicode = -1
Set outputFile = myFSO.OpenTextFile(getOutputName(Argument, getMsiFileName(Wscript.Arguments)), forWriting, True, Unicode)

此外,您需要在写入文件后关闭文件:

outputFile.Close

如果这没有帮助,请尝试像AnthonyWJones 建议的错误处理。

于 2010-02-09T22:29:10.763 回答
1

试试这个:-

MsgBox "Writing Line"
On Error Resume Next
outputFile.WriteLine s '' # Removed ( ) that shouldn't be there.
MsgBox "Err " & Err.Number & ": " & Err.Description
On Error GoTo 0

你得到了什么?

于 2010-02-09T22:01:05.227 回答
1

随着win版本的变化,事情发生了变化。这适用于 Win10:

Set outputfile = myFSO.CreateTextFile(filename,True,True)

对于 unicode/ascii 2 ,第三个参数是 bool true/false 。令人惊讶的是,当使用 myFSO.OpenTextFile 时,对于 unicode 1 ,arg 是 int 和 1 (不是 -1) 。

文档:

https://msdn.microsoft.com/en-us/library/aa265018(v=vs.60).aspx

https://msdn.microsoft.com/en-us/library/aa265347(v=vs.60).aspx

于 2017-06-13T06:57:40.890 回答