Fix Unicode file with missing BOM
Macro Scheduler‘s ReadFile and ReadLn functions understand ANSI, UTF8 and Unicode files – as long as they have a valid BOM header. But a client recently needed to read in a file with a missing BOM. So we wrote a little bit of VBScript which reads the binary stream in, and then outputs a UTF8 encoded file.
Here’s the code:
VBSTART
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
VBEND
//Convert it to UTF8
VBRun>UTFConvert,%SCRIPT_DIR%\data.txt
//Now we can read it :-)
ReadFile>%SCRIPT_DIR%\data.txt,theFileData