使用 vbscript 创建 ANSI 文本文件

Create ANSI text file using vbscript

我必须使用 vbs 创建一个带有 ANSI 编码的文本文件。

如果我只是创建它,没有写任何文本,使用此代码...

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set ObjFileTxt = objFSO.objFSO.CreateTextFile("filename.txt", True, False)  
Set ObjFileTxt = nothing
Set objFSO = nothing

...我得到一个 ANSI 文本文件,但是如果我尝试编写一些文本,例如...

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set ObjFileTxt = objFSO.CreateTextFile("filename.txt", True, False)   
ObjFileTxt.Write "ok"
Set ObjFileTxt = nothing
Set objFSO = nothing

...我得到一个 UTF8 文本文件。

有什么帮助吗?

您发布的代码不可能创建 UTF8 编码的输出文件。 CreateTextFile 方法仅支持 ANSI (windows-1252) 和 Unicode (little endian UTF-16) 编码。

在 VBScript 中创建 UTF8 编码文件的唯一方法是 ADODB.Stream 对象:

Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type     = 2 'text
stream.Position = 0
stream.Charset  = "utf-8"
stream.WriteText "some text"
stream.SaveToFile "C:\path\to\your.txt", 2
stream.Close

或写入单个字节(包括 BOM)。

我知道这已经很旧了,但为了将来参考...
信不信由你,在将 VBS 转换为 ANSI(UTF-8)之前,我遇到了同样的问题。然后,用它创建的每个新文本文件也都是 ANSI 而不是 UTF-8。