UCS-2 Little-Endian到UTF-8的转换会给文件留下许多不需要的字符
我有一个脚本,我经过了许多不同的方法,我可以使用VBScript中的ADODB进行编码转换,然后把它放在一起UCS-2 Little-Endian到UTF-8的转换会给文件留下许多不需要的字符,utf-8,vbscript,ucs2,Utf 8,Vbscript,Ucs2,我有一个脚本,我经过了许多不同的方法,我可以使用VBScript中的ADODB进行编码转换,然后把它放在一起 Option Explicit Sub UTFConvert() Dim objFSO, objStream, file file = "FileToConvert.csv" Set objStream = CreateObject( "ADODB.Stream" ) objStream.Open objStream.Type = 2
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)位于文件的开头。它们是可见的,无需使用任何符号可视化切换。如果您能帮助我了解我在转换过程中可能受到的限制,我们将不胜感激。或者我可以采取的任何替代方法。您的流
对象正在将文件加载为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
您的
流
对象正在将该文件作为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