Многие продукты при работе с UTF файлами не корректно работают если присутствует на нем BOM маркер. В моей работе частенько приходят файлы, сформированные из Microsoft Visual Studio с указанным префиксом. Для лечения сделал небольшой VBScript:
' Removes the Byte Order Mark - BOM from a text file with UTF-8 encoding
' The BOM defines that the file was stored with an UTF-8 encoding.
Public function RemoveBOM(filePath)
' Create a reader and a writer
Dim writer,reader, fileSize
Set writer = CreateObject("Adodb.Stream")
Set reader = CreateObject("Adodb.Stream")
' Load from the text file we just wrote
reader.Open
reader.LoadFromFile filePath
' Copy all data from reader to writer, except the BOM
writer.Mode=3
writer.Type=1
writer.Open
reader.position=5
reader.copyto writer,-1
' Overwrite file
writer.SaveToFile filePath,2
' Return file name
RemoveBOM = filePath
' Kill objects
Set writer = Nothing
Set reader = Nothing
end Function
Set objArgs = WScript.Arguments
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(objArgs(0))
Set colFiles = objFolder.Files
For Each objFile in colFiles
RemoveBOM(objArgs(0) + "\" + objFile.Name)
Next
WScript.Echo "Ok"
Использовать просто - перетянуть папку, в которой живут неправильные файлы, на этот скрипт.