Как кодировать файл в UCS2-Little Endian в Windows-1251?
Я пытаюсь изменить кодировку с существующего файла в UCS2-Little Endian на Windows-1251 из Visual Basic.
Я использую следующий код:
Sub convertFile()
t = AlterCharset("utf-16LE", "windows-1251")
iFileNum = FreeFile
Open sFullPath For Output As #iFileNum
Print #iFileNum, t
Close #iFileNum
End Sub
Private Function AlterCharset(FromChaset, ToCharset)
Dim Bytes
Bytes = StringToBytes(FromChaset)
AlterCharset = BytesToString(Bytes, ToCharset)
End Function
Function StringToBytes(Charset)
Dim Stream: Set Stream = CreateObject("ADODB.Stream")
Stream.Type = adTypeText
Stream.Charset = Charset
Stream.Open
Stream.LoadFromFile sFullPath
Stream.flush
Stream.Position = 0
Stream.Type = adTypeBinary
StringToBytes = Stream.Read
Stream.Close
Set Stream = Nothing
End Function
Private Function BytesToString(Bytes, Charset)
Dim Stream: Set Stream = CreateObject("ADODB.Stream")
Stream.Charset = Charset
Stream.Type = adTypeBinary
Stream.Open
Stream.Write Bytes
Stream.flush
Stream.Position = 0
Stream.Type = adTypeText
BytesToString = Stream.ReadText
Stream.Close
Set Stream = Nothing
Конечная функция
Проблема в том, что я всегда получаю несколько байтов в начале текста и не могу открыть его в блокноте ++
Может ли кто-нибудь взглянуть и увидеть, что может быть не так в моем коде?
1 ответ
Вы можете сделать это, чтобы прочитать UCS2-Little Endian:
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
txt = fso.OpenTextFile("txtfile.txt", 1, False, -1).ReadAll
Раз в памяти вы можете записать в другой файл