Macros 如何将文本文件的编码格式从Unicode更改为UTF-8

Macros 如何将文本文件的编码格式从Unicode更改为UTF-8,macros,vbscript,Macros,Vbscript,执行此代码后,surya.msg的编码格式是“ANSCII”,但我希望它是“UTF-8”可以使用FileSystemObject类的OpenTextFile()方法以常规方式打开Unicode编码的文本文件。只需传递第四个(“格式”)参数的True/-1 Const adTypeText = 2 Const adSaveCreateOverWrite = 2 Dim inputFile, outputFile inputFile = "input_file.txt" outpu

执行此代码后,surya.msg的编码格式是“ANSCII”,但我希望它是“UTF-8”

可以使用
FileSystemObject
类的
OpenTextFile()
方法以常规方式打开Unicode编码的文本文件。只需传递第四个(“格式”)参数的
True
/
-1

Const adTypeText = 2
Const adSaveCreateOverWrite = 2

Dim inputFile, outputFile
    inputFile = "input_file.txt"
    outputFile = "output_file.txt"

Dim inputStream
    Set inputStream  = WScript.CreateObject("adodb.stream")
    With inputStream
        .Type = adTypeText
        .Charset = "unicode"
        .Open
        .LoadFromFile inputFile
    End With

Dim outputStream
    Set outputStream = WScript.CreateObject("adodb.stream")
    With outputStream
        .Type = adTypeText
        .Charset = "utf-8"
        .Open
        .WriteText inputStream.ReadText
        .SaveToFile outputFile, adSaveCreateOverWrite
    End With

    inputStream.Close
    outputStream.Close
要将文本编码为UTF-8,需要使用
ADO流

strText = objFSO.OpenTextFile(inputFile, , , True).ReadAll()
有关Windows支持的字符编码列表,请查看以下注册表项:

Const adTypeText = 2
Const adSaveCreateOverWrite = 2

With CreateObject("ADODB.Stream")
    .Type = adTypeText
    .Charset = "utf-8"
    .Open
    .WriteText strText
    .SaveToFile "D:\A4\Message_tool\surya.msg", adSaveCreateOverWrite 
End With

.OpenTextFile方法的第四个/format参数采用三态,而不是布尔值。@Ekkehard.Horner-Yep。但是你可以对Unicode使用
True
,对ASCII使用
False
来达到同样的效果。@Bond-也许你可以,但你不应该。此外,你不应该为了获得更好的知识而坚持不良做法:-1.@Ekkehard.Horner LOL,随便什么。程序员利用
True=-1
False=0
的时间比我待的时间长。在C++中,(1)循环是“坚持坏习惯”。@邦德-您的猜测是正确的,因为C++中的一个无休止循环被表示为<代码>(true)或<代码>((;))< /COD>。code>while(1)是很好的C89/90,但由于在C99标准中引入了布尔数据类型,因此变得过时了。
Const adTypeText = 2
Const adSaveCreateOverWrite = 2

With CreateObject("ADODB.Stream")
    .Type = adTypeText
    .Charset = "utf-8"
    .Open
    .WriteText strText
    .SaveToFile "D:\A4\Message_tool\surya.msg", adSaveCreateOverWrite 
End With
HKEY_CLASSES_ROOT\MIME\Database\Charset