使用vbscript将中文字符写入文本文件

时间:2010-02-09 21:36:46

标签: string vbscript text-files cjk

我正在尝试使用

将一些中文字符写入文本文件
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)之后停止运行而不返回任何错误消息。

我错过了什么吗?

3 个答案:

答案 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