UCS-2 Little Endian 到 UTF-8 的转换会留下许多不需要的字符的文件
UCS-2 Little Endian to UTF-8 conversion leaves file with many unwanted characters
我有一个脚本,是我在尝试了许多不同的方法后组合在一起的,我可以在 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) 在文件的开头。这些是可见的,无需使用任何符号可视化切换。如果能帮助我理解这种转换在哪些方面可能会受到限制,我们将不胜感激。或者我可以采取的任何替代方法。
您的 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
我有一个脚本,是我在尝试了许多不同的方法后组合在一起的,我可以在 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) 在文件的开头。这些是可见的,无需使用任何符号可视化切换。如果能帮助我理解这种转换在哪些方面可能会受到限制,我们将不胜感激。或者我可以采取的任何替代方法。
您的 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