Преобразование Little Endian в UTF-8 UCS-2 оставляет файл со многими нежелательными символами
У меня есть сценарий, который я собрал после того, как перебрал много разных способов, которыми я мог бы выполнить преобразование кодировки, используя ADODB в VBScript.
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) в начале файла. Они видны без необходимости использования каких-либо переключателей визуализации символов. Любая помощь будет признательна в понимании, где я могу быть ограничен этим преобразованием. Или любой альтернативный подход, который я могу использовать.
1 ответ
Ваш 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