Как я могу остановить мой VBScript от записи файла другого типа, чем тот, который я прочитал? - PullRequest
1 голос
/ 07 июня 2019

Я читаю и пишу файл в VBScript.

Мой входной файл начинается с следующих пяти символов: <?xml.Я проверил эти 5 начальных символов с помощью шестнадцатеричного редактора.Входным файлом является карта DITA, например, показанная здесь: Объяснение карты DITA .

Мой выходной файл начинается с спецификации шестнадцатеричной FF FE, поэтому при попытке использовать (прочитайте) этот выходной файл как мой входной файл, это barfs, и я получаю ошибки.Откуда исходит этот FF FE и как я могу остановить его генерацию?

Другое отличие, которое я увидел в шестнадцатеричном редакторе, состоит в том, что входной файл является нормальным, один байт на символ.Но в шестнадцатеричном редакторе показано, что в выходном файле перед каждым символом есть значение 00.

Я начал использовать .ReadLine и .WriteLine, но переключился на .ReadAll и .Write, думая, что это может решить мою проблему,но это не так.

Я исследовал BOM и VBScript, но не нашел решений.

Set FileIn = FSO.OpenTextFile("C:\foo\barIn.txt", 1)
Text = FileIn.ReadAll
FileIn.Close

Set FileOut = FSO.OpenTextFile("C:\foo\barOut.txt", 2, True, True)
FileOut.Write Replace(Text, "findThis", "useThat")
FileOut.Close

Я не ожидал, что выходной файл будет таким разным!

1 Ответ

2 голосов
/ 07 июня 2019

Измените второй True в вашем open для записи оператора OpenTextFile в ноль (0). документация говорит, что это пишет ASCII.

Set FileOut = FSO.OpenTextFile("C:\foo\barOut.txt", 2, True, 0)

....

...