我有一个脚本,经过多种不同的方式我可以在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。但问题是,一旦此文件转换为UTF-8,在每个字母之前和之后的整个文件中都有许多NUL
个符号,xFF
xFE
(UCS-2 LE) BOM)在文件的开头。这些是可见的,无需使用任何符号可视化切换。任何帮助将理解我可能受限于此转换。或者我可以采取任何其他方法。
答案 0 :(得分:3)
您的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