我正在尝试使用
将一些中文字符写入文本文件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)
之后停止运行而不返回任何错误消息。
我错过了什么吗?
答案 0 :(得分:4)
也许它与字符编码有关。尝试在OpenTextFile
方法的最后一个参数中直接指定文件的Unicode格式:
Const Unicode = -1
Set outputFile = myFSO.OpenTextFile(getOutputName(Argument, getMsiFileName(Wscript.Arguments)), forWriting, True, Unicode)
此外,您需要在写入文件后关闭该文件:
outputFile.Close
如果这没有帮助,请尝试像AnthonyWJones suggested这样的错误处理。
答案 1 :(得分: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
你得到了什么?
答案 2 :(得分:0)
在win版本中,情况发生了变化。这适用于Win10:
Set outputfile = myFSO.CreateTextFile(filename,True,True)
对于unicode / ascii 2,第3个arg是bool true / false。令人惊讶的是,当使用myFSO.OpenTextFile时,对于unicode 1,arg为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