1

我有一个脚本,我在经历了许多不同的方式后组合在一起,我可以在 VBScript 中使用 ADODB 进行编码转换。

Option Explicit

Sub UTFConvert()
    Dim objFSO, objStream, file

    file = "FileToConvert.csv"

    Set objStream = CreateObject( "ADODB.Stream" )
    objStream.Open
    objStream.Type = 2
    objStream.Position = 0
    objStream.Charset = "utf-8"
    objStream.LoadFromFile file
    objStream.SaveToFile file, 2
    objStream.Close
    Set objStream = Nothing
End Sub

UTFConvert

该文件应该从 UCS-2 Little Endian 或它所采用的任何可读格式(在限制范围内)转换为 UTF-8。然而问题是,一旦此文件完成转换为 UTF-8 NUL,整个文件中的每个字母前后都会有许多符号,以及文件开头的xFF xFE(UCS-2 LE BOM)。这些是可见的,无需使用任何符号可视化切换。任何帮助将不胜感激,以了解我可能在此转换中受到限制。或者我可以采取的任何替代方法。

4

1 回答 1

4

您的Stream对象将文件作为 UTF-8 编码文件加载,从而误解了字节序列。FileSystemObject使用实例读取文件并使用ADODB.Stream对象写入:

Sub UTFConvert(filename)
  Set fso = CreateObject("Scripting.FileSystemObject")
  txt = fso.OpenTextFile(filename, 1, False, -1).ReadAll

  Set stream = CreateObject("ADODB.Stream")
  stream.Open
  stream.Type     = 2 'text
  stream.Position = 0
  stream.Charset  = "utf-8"
  stream.WriteText txt
  stream.SaveToFile filename, 2
  stream.Close
End Sub
于 2015-09-02T08:30:33.443 回答