Encoding 在Vbscript中将UTF-8文件转换为UTF-16 BE文件

Encoding 在Vbscript中将UTF-8文件转换为UTF-16 BE文件,encoding,utf-8,vbscript,data-conversion,utf-16,Encoding,Utf 8,Vbscript,Data Conversion,Utf 16,是否有任何方法可以在VBscript中将UTF-8转换为UTF-16 我有以下代码,但只转换为UTF-16 LE。 我需要输出为UTF-16 be Sub Utf8ToUtf16Le(fileIn,fileOut) Set FSO = CreateObject("Scripting.FileSystemObject") Set oStream = CreateObject ("ADODB.Stream") With oStream .Open .Typ

是否有任何方法可以在VBscript中将UTF-8转换为UTF-16

我有以下代码,但只转换为UTF-16 LE。 我需要输出为UTF-16 be

Sub Utf8ToUtf16Le(fileIn,fileOut)

Set FSO = CreateObject("Scripting.FileSystemObject")
Set oStream = CreateObject ("ADODB.Stream")

    With oStream
        .Open
        .Type = adTypeText
        .Charset = "utf-8"
        .LoadFromFile fileIn
        FSO.OpenTextFile(fileOut, 2, True, True).Write .ReadText
        .Close
    End With

End Sub
如果输出中需要BOM表,我们可以使用

    .Charset = "utf-16be"
    .WriteText ChrW(&hFEFF)
    .WriteText inputStream.ReadText

或者,正如Kul Tigin所指出的,我们可以将
.Charset
属性从
utf-16be
更改为
unicodeff
,谢谢!这很有效!但我有一个问题:为什么我的
文件输出没有字节顺序标记?不是我需要的,我只是想理解……SkReNATO,只是猜测,但是默认情况下,所有的VBS字符串都是UTF16,可能编码器不考虑BOM是必需的。如果您需要它,只需在
.WriteText-inputStream.ReadText
@skrena之前添加
.WriteText-ChrW(&hFEFF)
,即可将字符集
utf-16be
替换为
unicodeff
,然后它将按照您的预期工作。
    .Charset = "utf-16be"
    .WriteText ChrW(&hFEFF)
    .WriteText inputStream.ReadText